php crypt 文字列をハッシュ化する(一方向)
PHP4 PHP5 PHP7
php crypt 文字列をハッシュ化する(一方向)
crypt() 書式
string ハッシュ化文字列 = crypt('string $str' [, 'string $salt']);
//[ ]省略可
//返り値は文字列(string)
string ハッシュ化文字列 = crypt('string $str' [, 'string $salt']);
//[ ]省略可
//返り値は文字列(string)
説明 | 入力文字列をハッシュ化してハッシュ値を返します。 | |
---|---|---|
引数 | string $str | ハッシュ値に変換する入力文字列 |
返り値 | string ハッシュ化文字列 | ハッシュ値の文字列が帰ります。PHPが動作しているシステム上のアルゴリズムが使用可。 |
サンプル
1 2 3 4 | <?php $hashedPassword = crypt('mypassword'); // saltは自動生成 echo $hashedPassword;//出力 $1$6GHuGZUu$rtpadonZjDkrDkRA.3L29/ ?> |
ハッシュ(hash) は、「細切れ」「寄せ集め」という意味があります。ハッシュ値は、データが固定長のランダムな値に変換された値です。例えば、メールの送信メッセージの文字列をハッシュ値に変換し、元のメッセージと送信後のメッセージのハッシュ値を比較し、改竄の有無を確認するなどで使用します。ハッシュ値は非常に少ないビット数となるので、全文比較するより効率的で便利です。
ソルト(string $salt) は、パスワードやパスフレーズを生成し、ハッシュ化する際に加えるランダムなデータのことです。ソルトはハッシュ化毎にランダムに生成し、ハッシュ値とともにソルトもデータベースなどに保存することで、平分パスワードのまま保存されることを防ぎ、セキュリティーの向上を図ります。
◆ 引数 や 返り値 のデータ型の説明
データ型 引数 や 返り値 のデータ型の説明引数 や 返り値 | 内容(引数 | 返り値) |
---|---|
string | 文字列型 を受け入れる。 | 文字列型 を返す。 |
int | 整数型 を受け入れる。 | 整数型 を返す。 |
float | 浮動小数点数型 を受け入れる。 | 浮動小数点数型 を返す。 |
bool | 論理型 を受け入れる。 | 論理型 を返す。 |
number | 整数型 または 浮動小数点数型 を受け入れる。 | 整数型 または 浮動小数点数型 を返す。 |
array | 配列型 を受け入れる。 | 配列型 を返す。 |
object | オブジェクト型 を受け入れる。 | オブジェクト型 を返す。 |
array|object | 配列型 または オブジェクト型 を受け入れる。 | 配列型 または オブジェクト型 を返す。 |
mixed | 複数の データ型 を受け入れる(パラメーター)、或いは、返す(返り値)ことが可能。全てのデータ型ではありません。例えば gettype()関数 は全ての型を受け入れますが、一方、str_replace()関数 は、文字列型 と 配列型 のみを受け入れます。また、reset()関数 や end()関数 は、返り値に 配列型 と 論理型(FALSE)を返します。 |
void | パラメータ一覧で void が使用されている場合、その関数がパラメータを受け付けないことを表します。 | 返り値の型が void である場合、返り値に意味がないことを表します。 |
callback | callback 疑似型がこのドキュメントで使われていたのは、PHP 5.4 で callable タイプヒントが導入される前のことでした。両者はまったく同じ意味です。 |
◆ crypt() 内容
文字列をハッシュ化する
文字列のハッシュ値を返します。ハッシュ化のアルゴリズムは、UNIX標準の DES ベースか、PHPが動作しているシステム上で使えるアルゴリズムが使用出来ます。ハッシュ方式のサポートの有無を確認するには、次の定数が 0 か 1 で確認します。
- CRYPT_STD_DES – 標準の DES ベースのハッシュです。
- CRYPT_EXT_DES – 拡張した DES ベースのハッシュです。
- CRYPT_MD5 – $1$ ではじまる 12 文字の salt を使用する MD5 ハッシュです。
- CRYPT_BLOWFISH – Blowfish ハッシュです。
- CRYPT_SHA256 – SHA-256 ハッシュに $5$ で始まる 16 文字の salt を組み合わせたもの。
- CRYPT_SHA512 – SHA-512 ハッシュに $6$ で始まる 16 文字の salt を組み合わせたもの。
1 2 3 4 5 6 7 | <?php echo CRYPT_STD_DES."<br>\n"; echo CRYPT_EXT_DES."<br>\n"; echo CRYPT_MD5."<br>\n"; echo CRYPT_SHA256."<br>\n"; echo CRYPT_SHA512."<br>\n"; ?> |
string $salt パラメータは必須ではありませんが、強いハッシュ値を生成するのに必要です。ソルトを指定して、セキュリティの向上を図りましょう。省略してしまうと、crypt() が生成するハッシュ値が脆弱になります。PHP 5.6 以降は、このパラメータを省略した場合に E_NOTICE が発生するようになりました。
※crypt() で生成したハッシュ値は、単方向アルゴリズムで生成されるために復号できません。
◆ crypt() パラメーター
パラメーター | 内容 |
---|---|
string $str | ハッシュしたい文字列を指定します。 |
string $salt | ハッシュのもととなる salt 文字列を指定します。 |
mixed $needle および string $haystack は大文字小文字を区別せずに評価されます。
◆ crypt() 返り値
string | FALSE
ハッシュ化された文字列を返します。
string 文字列型 や FALSE 論理型 を返します。
◆ crypt() 変更履歴
PHPバージョン | 変更内容 |
---|---|
PHP 5.3.0 | オプションの bool $before_needle パラメーターが追加されました。 |
PHP 4.3.0 | crypt() がバイナリセーフに変更されました。 |
php crypt() サンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <?php if(CRYPT_STD_DES == 1) { echo 'Standard DES :['.crypt('mypassword', '.R-nYuJxia)M')."]<br>\n"; } if(CRYPT_EXT_DES == 1) { echo 'Extended DES : ['.crypt('mypassword', 'AR,JATmq.pq&')."]<br>\n"; } if(CRYPT_MD5 == 1) { echo 'MD5 : ['.crypt('mypassword', '+mENxfcVS_-h')."]<br>\n"; } if(CRYPT_BLOWFISH == 1) { echo 'Blowfish : ['.crypt('mypassword', '-sX&4Ft4d$jy')."]<br>\n"; } if(CRYPT_SHA256 == 1) { echo 'SHA-256 : ['.crypt('mypassword', 'WH)h#R%fx,EG')."]<br>\n"; } if(CRYPT_SHA512 == 1) { echo 'SHA-512 : ['.crypt('mypassword', 'M~,/H3SC#,A4')."]<br>\n"; } ?> |
実行結果
Standard DES :[.RsCo/lZMfUy6]
Extended DES : [ARDLKOQHXjVH2]
MD5 : [+mgHxiW9agIw.]
Blowfish : [-sCNw3yQQE9AM]
SHA-256 : [WHRp4K8.gVmRs]
SHA-512 : [M~Oeh7YE1HUQQ]
Extended DES : [ARDLKOQHXjVH2]
MD5 : [+mgHxiW9agIw.]
Blowfish : [-sCNw3yQQE9AM]
SHA-256 : [WHRp4K8.gVmRs]
SHA-512 : [M~Oeh7YE1HUQQ]
タグ(=記事関連ワード)
日付
投稿日:2019年7月2日
最終更新日:2019年11月10日
最終更新日:2019年11月10日
このカテゴリの他のページ
この記事へのコメント
トラックバックurl
https://wepicks.net/phpfunction-string-crypt/trackback/