PHPのcrypt()関数
定義と使用法
地下室()関数は、文字列を暗号化するためのDES、フグ、またはMD5アルゴリズムの使用を返します。
異なるオペレーティングシステム、機能の異なる挙動に、いくつかのオペレーティングシステムは、アルゴリズムの複数のタイプをサポートします。 インストールする場合、PHPは、どのような利用可能であり、どのようなアルゴリズムアルゴリズムをチェックします。
正確なアルゴリズムは、salt引数の形式と長さに依存しています。 塩は、文字列を生成するために特定の暗号化方式で特定の文字列で数を増加させることにより、暗号化をより安全にすることができます。
ここではいくつかの定数とのcrypt()関数がで使用されています。 定数値は、PHPがインストール時に設定されています。
定数:
- 【CRYPT_SALT_LENGTH] - 暗号化の長さをデフォルト。 標準のDES暗号化、2の長さを使用して、
- 【CRYPT_STD_DES] - DES暗号化はアルファベットから、2文字の塩規格に基づきます「./0-9A-Za-z」。 塩に無効な文字が失敗した関数につながります。
- 【CRYPT_EXT_DES] - DESベースの暗号化は、反復回数の4バイトと塩組成の4バイトの背後にあるアンダースコアで塩9文字を持っている拡張。 これらは、印刷可能な文字、6の各、最下位の文字としてエンコードされます。 0〜63の値が「./0-9A-Za-z」として符号化されます。 塩に無効な文字が失敗した関数につながります。
- 【CRYPT_MD5] - MD5暗号化は、$ 1 $で始まる、塩12文字を持っています。
- 【CRYPT_BLOWFISH] - Blowfishの暗号化は、同様に「./0-9A-Za-z "アルファベットから$ 2aは$、$ 2×$または$ 2yと塩の$始まり、二桁のコストパラメータ、" $ "を持っています22文字。 関数が0の文字列を返すトリガーするアルファベット文字以外に使用します。 "$"パラメータは、フグハッシュアルゴリズムは、04から31の範囲でなければなりません反復数の2を底とする対数です。 この範囲外の値は失敗した関数につながります。
- 【CRYPT_SHA_256] - SHA-256暗号化は、$ 5 $で始まる、塩の16文字があります。 もし塩列"ラウンド= <N> $」が開始されると、N回のデジタル値ループを示すのに使用されるハッシュコストパラメータフグに類似しており、実行されます。 サイクルのデフォルトの数は5000であり、最小値は1000であり、最大値は999,999,999です。 Nは、この範囲外の値は、最も近い境界値に変換されています。
- 【CRYPT_SHA_512] - SHA-512暗号化は$ 6 $で始まる、塩の16文字があります。 もし塩列"ラウンド= <N> $」が開始されると、N回のデジタル値ループを示すのに使用されるハッシュコストパラメータフグに類似しており、実行されます。 サイクルのデフォルトの数は5000であり、最小値は1000であり、最大値は999,999,999です。 Nは、この範囲外の値は、最も近い境界値に変換されています。
この関数は、複数のアルゴリズム・システムをサポートするには一定の上方にサポートされている場合、それ以外の場合は設定され、「1」に設定されている "0"
注:対応する復号機能はありません。 地下室()関数は、一方向のアルゴリズムを使用しています。
文法
crypt( str,salt )
参数 | 描述 |
---|---|
str | 必需。规定要编码的字符串。 |
salt | 可选。用于增加被编码字符数目的字符串,以使编码更加安全。如果未提供 salt 参数,则每次调用该函数时会随机生成一个。 |
技術的詳細
戻り値: | それが13未満の文字を返すことに失敗した場合は戻り値は、文字列を暗号化し、文字列の保証は塩とは異なります。 |
---|---|
PHPバージョン: | 4+ |
更新ログ: | PHP 5.3.7では、高い潜在的な攻撃に対処するために$ 2倍の$と$ 2Y $フグモードを追加します。 PHP 5.3.2では、一定のSHA-256とSHA-512を追加します。 以降PHP 5.3.2以来、無効なループ内のふぐは、DESに戻って( "* 0"または "* 1")「失敗」の文字列を返すのではなく、します。 PHP 5.3.0から開始し、PHPは標準DES、フグを達成し、達成するためのDESアルゴリズムを拡張し、達成するためにMD5暗号化が付属しています。 システムがサポートしていない場合、これらのアルゴリズムは、PHP独自のアルゴリズムを使用します。 |
例
例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.";
}
?>
// 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.";
}
?>
上記のコードは、(オペレーティングシステムによって異なります)、次が出力されます。
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.
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の文字列リファレンス