<PHPの文字列のリファレンス
定義と使用法
crypt()関数は、DES、フグ、またはMD5アルゴリズムを使用してハッシュ文字列を返します。
この機能は、異なるオペレーティングシステム上で異なる動作をします。 PHPは、アルゴリズムが利用可能であり、それがインストールされている場合、どのようなアルゴリズムを使用するかをチェックします。
塩のパラメータはオプションです。 しかし、 crypt() 、塩なしで脆弱なパスワードを作成します。 セキュリティを強化するために十分な強塩を指定してください。
一緒に使用されるいくつかの定数があるcrypt()関数が。 それがインストールされている場合、これらの定数の値は、PHPで設定されています。
定数:
- [CRYPT_STD_DES] -アルファベットから2つの文字のsaltと標準DESベースのハッシュ"./0-9A-Za-z" 。 塩で無効な文字を使用すると、この関数は失敗します。
- 【CRYPT_EXT_DES] - 反復回数の4バイトと塩の4つのバイトが続くアンダーからなる9つの文字塩とDESベースのハッシュを拡張しました。 これらは、最初の印刷可能文字、文字当たり6ビット、最下位文字として符号化されます。 0〜63の値は、次のように符号化される"./0-9A-Za-z" 。 塩で無効な文字を使用すると、関数が失敗する原因になります。
- [CRYPT_MD5] - MD5 $ 1 $で始まる12文字のsaltをハッシュ化
- [CRYPT_BLOWFISH] - $ 2A $、$ 2倍の$で始まる塩とフグハッシュ、または$ 2Y $、2桁のコストパラメータ"$" 、およびアルファベットから22文字"./0-9A-Za-z" 。 アルファベットの外の文字を使用すると、この関数は長さゼロの文字列を返すようになります。 "$"のパラメータは、基礎となるフグ-ボコボコハッシングalgorithmeterのための反復回数の2を底とする対数で、範囲04から31でなければなりません。 この範囲外の値は、関数が失敗する原因になります。
- [CRYPT_SHA_256] - $ 5 $で始まる16文字の塩とSHA-256ハッシュ。 塩文字列で始まる場合は"rounds=<N>$" 、Nの数値は、ハッシュ・ループがずっとフグのコストパラメータと同様に、実行されるべき回数を示すために使用されます。 ラウンドのデフォルト数は5000で、1000の最小値と999,999,999の最大値があります。 この範囲外のNのいずれかの選択は、最も近い限界まで切り詰められます。
- 【CRYPT_SHA_512] - $ 6 $で始まる16文字の塩とSHA-512ハッシュ。 塩文字列で始まる場合は"rounds=<N>$" 、Nの数値は、ハッシュ・ループがずっとフグのコストパラメータと同様に、実行されるべき回数を示すために使用されます。 ラウンドのデフォルト数は5000で、1000の最小値と999,999,999の最大値があります。 この範囲外のNのいずれかの選択は、最も近い限界まで切り詰められます。
この機能は、複数のアルゴリズムをサポートするシステムでは、上記の定数は次のように設定されている"1"サポートされている場合と"0" 、さもなければ。
Note:何の復号化機能はありません。 crypt()関数は、一方向のアルゴリズムを使用しています。
構文
crypt( str,salt )
パラメーター | 説明 |
---|---|
str | 必須。 ハッシュされる文字列を指定します |
salt | 任意。 ハッシュを上の基になるsalt文字列 |
技術的な詳細
戻り値: | エンコードされた文字列または13文字未満であると、障害に塩と異なることが保証された文字列を返します。 |
---|---|
PHPバージョン: | 4+ |
変更履歴: | $ 2倍の$と$ 2Y $フグのモードは、潜在的に高いビットの攻撃に対処するためにPHP 5.3.7で追加されました。 定数SHA-256およびSHA-512は、PHP 5.3.2で追加されました。 PHP 5.3.2の時点では、無効なラウンドのフグの挙動を返し"failure"の文字列("*0" or "*1")の代わりにバックDESに落下するのを、。 PHP 5.3.0の時点で、PHPはMD5の暗号のための独自の実装が含まれている、標準のDESは、DESおよびフグのアルゴリズムを拡張し、システムはアルゴリズムの一つ以上のサポートが不足している場合は、その使用されます。 |
例
例1
この例では、異なるアルゴリズムをテストします。
<?php
// 2 character salt
if (CRYPT_STD_DES == 1)
{
echo "Standard DES: ".crypt('something','st')."\n<br>";
}
else
{
echo "Standard DES not supported.\n<br>";
}
// 4 character salt
if (CRYPT_EXT_DES == 1)
{
echo "Extended DES:
".crypt('something','_S4..some')."\n<br>";
}
else
{
echo
"Extended DES not supported.\n<br>";
}
// 12 character salt
starting with $1$
if (CRYPT_MD5 == 1)
{
echo "MD5:
".crypt('something','$1$somethin$')."\n<br>";
}
else
{
echo
"MD5 not supported.\n<br>";
}
// Salt starting with $2a$. The two
digit cost parameter: 09. 22 characters
if (CRYPT_BLOWFISH == 1)
{
echo "Blowfish: ".crypt('something','$2a$09$anexamplestringforsalt$')."\n<br>";
}
else
{
echo "Blowfish DES not supported.\n<br>";
}
// 16 character salt starting with $5$. The default number of rounds is
5000.
if (CRYPT_SHA256 == 1)
{
echo "SHA-256:
".crypt('something','$5$rounds=5000$anexamplestringforsalt$')."\n<br>"; }
else
{
echo "SHA-256 not supported.\n<br>";
}
// 16
character salt starting with $5$. The default number of rounds is 5000.
if (CRYPT_SHA512 == 1)
{
echo "SHA-512:
".crypt('something','$6$rounds=5000$anexamplestringforsalt$');
}
else
{
echo "SHA-512 not supported.";
}
?>
上記のコードの出力があってもよい(depending on the operating system) :
Standard DES: stqAdD7zlbByI
Extended DES: _S4..someQXidlBpTUu6
MD5:
$1$somethin$4NZKrUlY6r7K7.rdEOZ0w.
Blowfish:
$2a$09$anexamplestringforsaleLouKejcjRlExmf1671qw3Khl49R3dfu
SHA-256:
$5$rounds=5000$anexamplestringf$KIrctqsxo2wrPg5Ag/hs4jTi4PmoNKQUGWFXlVy9vu9
SHA-512:
$6$rounds=5000$anexamplestringf$Oo0skOAdUFXkQxJpwzO05wgRHG0dhuaPBaOU/
oNbGpCEKlf/7oVM5wn6AN0w2vwUgA0O24oLzGQpp1XKI6LLQ0.
<PHPの文字列のリファレンス