crypt
一方向の文字列ハッシュ
crypt()
関数は、DES、BlowFish、またはMD5アルゴリズムを使用して暗号化された文字列を返します。
この機能は異なるオペレーティングシステムで異なる動作をし、一部のオペレーティングシステムは複数のアルゴリズムタイプをサポートしています。インストール中、PHPはどのアルゴリズムが利用可能か、どのアルゴリズムが使用されるかをチェックします。
特定のアルゴリズムは、塩パラメーターの形式と長さに依存します。特定の暗号化方法を使用して特定の文字列によって生成される文字列の数を増やすことにより、塩は暗号化をより安全にすることができます。
crypt()
関数で使用される定数は次のとおりです。これらの一定の値は、設置時にPHPによって設定されます。
[crypt_salt_length] | デフォルトの暗号化長。長さ2で標準のデス暗号化を使用します |
[crypt_std_des] | 標準DESアルゴリズムに基づくハッシュは、塩値として「./0-9A-ZA-Z」文字の2文字を使用します。塩値で違法な文字を使用すると、Crypt()が失敗します。 |
[crypt_ext_des] | DESアルゴリズムに基づいて拡張ハッシュ。 9文字の塩値を持つ文字列は、1つのアンダースコアで構成され、その後4バイトのサイクルと4バイトの塩値が続きます。それらは印刷可能な文字にエンコードされ、各文字には6ビットがあり、最も有意なビットが好まれます。 0〜63は「./0-9A-ZA-Z」としてエンコードされます。塩値で違法な文字を使用すると、Crypt()が失敗します。 |
[crypt_md5] | MD5ハッシュは、$ 1 $で始まる12文字の文字列塩値を使用します。 |
[crypt_blowfish] | BlowFishアルゴリズムは、「$ 2A $」、2ビットコストパラメーター、「$」、「./0-9A-ZA-Z」の文字で構成される64ビット文字列の次の塩値を使用します。塩値でこの範囲外の文字を使用すると、Crypt()が空の文字列を返します。 2ビットコストパラメーターは、ベース2のループ数を持つ対数であり、その範囲は04-31です。この範囲を超えると、Crypt()が失敗します。 |
crypt_sha256 | SHA-256アルゴリズムは、$ 5 $で始まる16文字の文字列塩値を使用してハッシュします。塩値の文字列が「rounds = <n> $」で始まる場合、nの数値を使用して、ハッシュループの実行数を指定します。これは、ブローフィッシュアルゴリズムのコストパラメーターによく似ています。ループのデフォルト数は5000、最小値は1000、最大値は999,999,999です。 nこの範囲外のnは、最も近い値に変換されます。 |
crypt_sha512 | SHA-512アルゴリズムは、ハッシュに6ドルから始まる16文字の弦塩値を使用します。塩値の文字列が「rounds = <n> $」で始まる場合、nの数値を使用して、ハッシュループの実行数を指定します。これは、ブローフィッシュアルゴリズムのコストパラメーターによく似ています。ループのデフォルト数は5000、最小値は1000、最大値は999,999,999です。 nこの範囲外のnは、最も近い値に変換されます。 |
この関数が複数のアルゴリズムをサポートするシステムでは、上記の定数がサポートされている場合、「1」に設定されているため、「0」に設定されます。
注:対応する復号化関数はありません。 crypt()
関数は一方向アルゴリズムを使用します。
この例では、さまざまなアルゴリズムをテストします。
<?php // 2文字の塩 if ( crypt_std_des == 1 ) { エコー「標準DES:」 。 Crypt ( 'Something' 、 'St' ) 。 "\ n <br>" ; } それ以外 { Echo "標準DESサポートされていない。\ n <br>" ; } // 4文字の塩 if ( crypt_ext_des == 1 ) { echo "拡張des:" 。 Crypt ( 'Something' 、 '_s4..some' ) 。 "\ n <br>" ; } それ以外 { echo "拡張されたdesはサポートされていません。\ n <br>" ; } // $ 1 $から始まる12文字 if ( crypt_md5 == 1 ) { エコー"md5:" 。 Crypt ( 'Something' 、 '$ 1 $ somethin $' ) 。 "\ n <br>" ; } それ以外 { echo "md5サポートされていない。\ n <br>" ; } // $ 2A $から始まる塩。ダブル番号のコストパラメーター:09。22文字 if ( crypt_blowfish == 1 ) { エコー「ブローフィッシュ:」 。 Crypt ( 'Something' 、 '$ 2a $ 09 $ anexamplestringforsalt $' ) 。 "\ n <br>" ; } それ以外 { echo "blowfish des not supported。\ n <br>" ; } // $ 5 $から始まる16文字の塩。円周のデフォルト数は5000です。 if ( crypt_sha256 == 1 ) { エコー「Sha-256:」 。 Crypt ( 'Something' 、 '$ 5 $ rounds = 5000 $ anexamplestringforsalt $' ) 。 "\ n <br>" ; } それ以外 { echo "sha-256サポートされていない。\ n <br>" ; } // $ 5 $から始まる16文字の塩。円周のデフォルト数は5000です。 if ( crypt_sha512 == 1 ) { エコー"sha-512:" 。 Crypt ( 'Something' 、 '$ 6 $ rounds = 5000 $ anexamplestringforsalt $' ) ; } それ以外 { エコー「Sha-512はサポートされていません。」 ; } ?>
上記のコードの出力(オペレーティングシステムに応じて):
標準DES:stqadd7zlbbyi 拡張DES:_S4..ESOMEQXIDLBPTUU6 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。
地下室( str 、塩)
パラメーター | 説明する |
---|---|
str | 必須。エンコードする文字列を指定します。 |
塩 | オプション。エンコードされた文字の数を増やして、エンコードをより安全にするために使用されます。塩パラメーターが提供されていない場合、機能が呼び出されるたびにPHPがランダムに生成されます。 |