関数を使用してcrypt()
いますが、実装が正しいかどうかわかりません。このようなものを書く場合、どのようなアルゴリズムを使用していますか:
crypt('PE','12345')
ドキュメントを読みましたが、のような5文字のソルトでどのアルゴリズムが選択されているのかわかりません12345
。
関数を使用してcrypt()
いますが、実装が正しいかどうかわかりません。このようなものを書く場合、どのようなアルゴリズムを使用していますか:
crypt('PE','12345')
ドキュメントを読みましたが、のような5文字のソルトでどのアルゴリズムが選択されているのかわかりません12345
。
基盤となるシステムによって異なります。代わりにhash()を使用することをお勧めします。例えば。
$algos = hash_algos();
if (in_array("sha256", $algos)) {
$str = hash ("sha256", "something" . "salt");
}
このようにして、1つのハッシュアルゴリズムを一貫して使用できます。
ドキュメントに記載されているように、システムによって異なります。
システムが何をサポートしているかを判断するために、PHPで定義されている定数の値を確認できます。定数CRYPT_SALT_LENGTHは、ソルト文字列の予想される長さを表示します。DESは2文字のソルトを受け入れます。MD5は12文字を受け入れます。また、CRYPT_STD_DES、CRYPT_EXT_DES、CRYPT_MD5、CRYPT_BLOWFISHのいずれかのフラグが設定されているかどうかを確認することもできます。これを行うには、次のようなコマンドを発行します。echo CRYPT_MD5
数字の1は、サポートされていることを示します。0は、そうではないことを示します。
ここで詳細を読むことを検討してくださいhttp://www.techrepublic.com/article/the-perils-of-using-php-crypt/1058691
crypt()
システムで使用可能な場合は標準のUnixDESベースのアルゴリズムを使用してハッシュされた文字列を返し、使用できない場合はMD5ベースのアルゴリズムを返します。また、次のリストから、使用するアルゴリズムのタイプを設定できます。
このリストは次のように使用できます。
//setting the value to 1 means enable this algorithm
//which will return true or false.
if (CRYPT_STD_DES == 1) {
echo 'Standard DES: ' . crypt('rasmuslerdorf', 'rl') . "\n";
}
if (CRYPT_EXT_DES == 1) {
echo 'Extended DES: ' . crypt('rasmuslerdorf', '_J9..rasm') . "\n";
}
if (CRYPT_MD5 == 1) {
echo 'MD5: ' . crypt('rasmuslerdorf', '$1$rasmusle$') . "\n";
}
if (CRYPT_BLOWFISH == 1) {
echo 'Blowfish: ' . crypt('rasmuslerdorf', '$2a$07$usesomesillystringforsalt$') . "\n";
}
if (CRYPT_SHA256 == 1) {
echo 'SHA-256: ' . crypt('rasmuslerdorf', '$5$rounds=5000$usesomesillystringforsalt$') . "\n";
}
if (CRYPT_SHA512 == 1) {
echo 'SHA-512: ' . crypt('rasmuslerdorf', '$6$rounds=5000$usesomesillystringforsalt$') . "\n";
}
つまり、システムごとにデフォルトを使用したくない場合は、使用する前に使用するアルゴリズムのタイプを選択する必要があります。
crypt()は、標準のUnixDESベースのアルゴリズムまたはシステムで使用可能な代替アルゴリズムを使用してハッシュ文字列を返します。
PHPDocから