PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのcrypt()関数とは?ハッシュアルゴリズムの種類と使い方を解説

PHPのcrypt()関数とは

PHPのcrypt()関数は、DES、Blowfish、MD5などのアルゴリズムを使用して文字列をハッシュ化するための関数です。主にパスワードの暗号化などに利用されます。

注意: この関数の動作は、オペレーティングシステムによって異なる場合があります。

crypt()関数と組み合わせて使用される主な定数は以下の通りです。

  • [CRYPT_STD_DES] - 標準的なDESベースのハッシュ。「./0-9A-Za-z」の文字からなる2文字のソルトを使用します。

  • [CRYPT_EXT_DES] - 拡張DESベースのハッシュ。アンダースコア(_)に続き、4バイトの反復回数と4バイトのソルトからなる9文字のソルトを使用します。

  • [CRYPT_MD5] - MD5ハッシュ。「$1$」で始まる12文字のソルトを使用します。

  • [CRYPT_BLOWFISH] - Blowfishハッシュ。「$2a$」「$2x$」「$2y$」のいずれかで始まるソルト、2桁のコストパラメータ、および「./0-9A-Za-z」の文字からなる22文字を使用します。

  • [CRYPT_SHA_256] - SHA-256ハッシュ。「$5$」で始まる16文字のソルトを使用します。

  • [CRYPT_SHA_512] - SHA-512ハッシュ。「$6$」で始まる16文字のソルトを使用します。

構文

crypt(str, salt)

パラメータ

  • str - ハッシュ化する対象の文字列。必須です。

  • salt - ハッシュ化の基となるソルト文字列。省略可能です。

戻り値

crypt()関数は、エンコードされた文字列を返します。処理に失敗した場合は13文字未満の文字列が返され、その文字列がソルトと異なることが保証されます。

以下は使用例です。

使用例

<?php
if (CRYPT_STD_DES == 1) {
    echo "DES supported = ".crypt('demo','st')."\n";
} else {
    echo "DES not supported!";
}
?>

上記コードの実行結果は以下の通りです。

出力

DES supported = st7zBedJadRn2

補足:より安全な代替手段

なお、現在のPHPでは、パスワードのハッシュ化にはcrypt()関数よりもpassword_hash()関数の使用が推奨されています。password_hash()はソルトの自動生成や適切なアルゴリズムの選択を内部で行ってくれるため、より安全でシンプルに実装できます。

  1. PHPのlog()関数とは?自然対数の計算方法と使い方を解説

    定義と使い方log() 関数は、数値の自然対数(natural logarithm)を計算します。対数とは、指数関数の逆演算のことです。たとえば 102=100 という関係は「log10100=2」と表せます。自然対数はオイラー数 e を底として計算され、PHP では定義済み定数 M_E によって e の値(2.7182818284590452354)が提供されています。具体例を挙げると、exp(4.60517018599)=100(つまり e4.60517018599=100)が成り立つため、loge100=4.60517018599 となります。PHP では、この自然対数(loge)を l

  2. PHPのlcg_value()関数とは?乱数生成の基本と使い方を解説

    lcg_value()関数の定義と使い方lcg_value()関数は、0から1までの範囲でランダムな数値(浮動小数点数)を生成するPHP組み込み関数です。「LCG」とは「線形合同法(Linear Congruential Generator)」の略称です。この手法は、不連続な区分線形方程式を用いて擬似乱数列を計算するアルゴリズムで、擬似乱数生成アルゴリズムの中でも最も古くから知られているものの一つです。構文lcg_value ( void ) : floatパラメータこの関数は引数を受け取りません。戻り値lcg_value()関数は、0.0以上1.0以下の範囲にある擬似乱数のfloat値を返し