crypt() 関数は、DES、Blowfish、または MD5 アルゴリズムを使用して暗号化された文字列を返します。
この関数はオペレーティング システムによって動作が異なり、一部のオペレーティング システムでは複数のアルゴリズム タイプがサポートされます。インストール時に、PHP は利用可能なアルゴリズムと使用されるアルゴリズムを確認します。
正確なアルゴリズムは、salt 引数の形式と長さによって異なります。 Salt では、特定の暗号化方式を使用して特定の文字列から生成される文字列の数を増やすことで、暗号化の安全性を高めることができます。
crypt() 関数で使用する定数をいくつか示します。これらの定数値は、インストール時に PHP によって設定されます。
絶え間ない:
[CRYPT_SALT_LENGTH] - デフォルトの暗号化長。標準の DES 暗号化、長さ 2 を使用します。
[CRYPT_STD_DES] - アルファベット「./0-9A-Za-z」の 2 文字のソルトを使用した標準の DES ベースの暗号化。ソルトで無効な文字を使用すると、関数が失敗します。
[CRYPT_EXT_DES] - アンダースコア、その後に 4 バイトの反復番号、および 4 バイトのソルトで構成される 9 文字のソルトを使用した拡張 DES ベースの暗号化。これらは、印刷可能な文字として、1 文字あたり 6 ビット、最下位文字から順にエンコードされます。値0~63は「./0-9A-Za-z」としてエンコードされます。ソルトで無効な文字を使用すると、関数が失敗します。
[CRYPT_MD5] - $1$ で始まる 12 文字のソルトを使用した MD5 暗号化。
[CRYPT_BLOWFISH] - Blowfish 暗号化には、$2a$、$2x$、または $2y$ で始まるソルト、2 桁のコスト パラメーター "$"、およびアルファベット "./0-9A-Za-z" 22 文字が含まれます。で 。アルファベット以外の文字を使用すると、関数は長さ 0 の文字列を返します。 「$」パラメータは、Blowfish ハッシュ アルゴリズムの反復回数の底 2 の対数であり、04 ~ 31 の範囲内である必要があります。この範囲外の値を指定すると、関数が失敗します。
[CRYPT_SHA_256] - SHA-256 暗号化には、$5$ で始まる 16 文字のソルトがあります。ソルト文字列が「rounds=<N>$」で始まる場合、N の数値は、Blowfish のコスト パラメーターと同様に、ハッシュ ラウンドが実行される回数を表すために使用されます。デフォルトのループ数は 5000、最小値は 1000、最大値は 999,999,999 です。この範囲外の N の値は、最も近い境界値に変換されます。
[CRYPT_SHA_512] - $6$ で始まる 16 文字のソルトを使用した SHA-512 暗号化。ソルト文字列が「rounds=<N>$」で始まる場合、N の数値は、Blowfish のコスト パラメーターと同様に、ハッシュ ラウンドが実行される回数を表すために使用されます。デフォルトのループ数は 5000、最小値は 1000、最大値は 999,999,999 です。この範囲外の N の値は、最も近い境界値に変換されます。
この関数が複数のアルゴリズムをサポートするシステムでは、上記の定数はサポートされている場合は「1」に設定され、サポートされていない場合は「0」に設定されます。
注:対応する復号化関数はありません。 crypt() 関数は一方向アルゴリズムを使用します。
crypt( str,salt )
パラメータ | 説明する |
---|---|
str | 必須。エンコードする文字列を指定します。 |
塩 | オプション。エンコードの安全性を高めるために、エンコードされる文字の数を増やすために使用される文字列。ソルト引数が指定されていない場合、関数が呼び出されるたびにソルト引数がランダムに生成されます。 |
戻り値: | 暗号化された文字列を返します。失敗した場合は、ソルトとは異なることが保証されている 13 文字未満の文字列を返します。 |
---|---|
PHPのバージョン: | 4+ |
更新ログ: | PHP 5.3.7 では、潜在的な高レベルの攻撃に対処するために $2x$ および $2y$ Blowfish モードが追加されました。 PHP 5.3.2 では、新しい定数 SHA-256 および SHA-512 が追加されました。 PHP 5.3.2 以降、Blowfish は無効なループで DES にフォールバックする代わりに「失敗」文字列 (「*0」または「*1」) を返します。 PHP 5.3.0 以降、PHP には MD5 暗号化実装、標準 DES 実装、拡張 DES 実装、および Blowfish アルゴリズムが付属しています。システムが上記のアルゴリズムをサポートしていない場合は、PHP 独自のアルゴリズムが使用されます。 |
crypt() 暗号化には htpasswd を使用します。
<?php //パスワードを設定する$password = ' mypassword ' //ハッシュ値を取得し、自動ソルト値を使用します。 $ハッシュ=暗号化( $パスワード) ? >この例では、さまざまなハッシュ タイプを使用します。
<?phpもし( CRYPT_STD_DES == 1 ) { エコー'標準DES : ' .crypt ( ' rasmuslerdorf ' , ' rl ' ) ; もし( CRYPT_EXT_DES == 1 ) { エコー'拡張DES : ' .crypt ( ' rasmuslerdorf ' , ' _J9..rasm ' ) ; もし( CRYPT_MD5 == 1 ) { エコー' MD5 : ' . crypt ( ' rasmuslerdorf ' 、 ' $ 1 $ rasmusle $ ' ) ; もし( CRYPT_BLOWFISH == 1 ) { エコー'フグ: ' . crypt ( ' rasmuslerdorf ' , ' $ 2a $ 07 $usesomesillystringforsalt $ ' ) ; もし( CRYPT_SHA256 == 1 ) { エコー' SHA-256: ' .crypt ( ' rasmuslerdorf ' , ' $ 5 $ rounds = 5000 $ usesomesillystringforsalt$ ' ) ; もし( CRYPT_SHA512 == 1 ) { エコー' SHA-512: ' .crypt ( ' rasmuslerdorf ' , ' $ 6 $ rounds = 5000 $usesomesillystringforsalt $ ' ) ; ?>上記のコードは次を出力します (オペレーティング システムによって異なります)。
標準 DES: rl.3StKT.4T8ME 拡張 DES: _J9..rasmBYk8r9AiWNcMD5: $1$rasmusle$rISCgZzpwk3UhDidwXvin0Blowfish: $2a$07$usesomesillystringfore2uDLvp1Ii2e./U9C8sBjqp8I90dH6hiSHA-256: $5$rounds=5000$usesomesillystri$KqJWpanXZHKq2BOB43TSaYhEWsQ1Lr5QNyPCDH/Tp.6SHA-512: $6$rounds=5000$usesomesillystri$D4IrlXatmP7rx3P3InaxBeoomnAihCKRVQP22JZ6EY47Wc6BkroIuUUBOov1i.S5KPgErtP/EN5mcO.ChWQW21