PHPでは、 crypt()関数は、主にパスワードのハッシュを処理するために使用される一方向で文字列を暗号化するために使用される関数です。この関数は、提供された「塩」値に基づいて異なる暗号化アルゴリズムを自動的に選択し、それにより柔軟な暗号化方法を実現します。 Crypt()とその該当するシナリオによってサポートされる暗号化アルゴリズムを理解することで、開発者はセキュリティ設計でより合理的な選択をするのに役立ちます。
使い方:
$hash = crypt('mypassword', 'rl');
説明:
これは、最も初期の暗号化方法の1つです。 2文字の塩値を使用し、13文字のハッシュ値を生成します。
該当するシナリオ:
古いシステムと互換性があります。
最新のアプリケーションには推奨されません。これは、安全性が低く、ブルートフォース攻撃に対して脆弱であるためです。
使い方:
$hash = crypt('mypassword', '_J9..rasm');
説明:
_で始まる塩値でアルゴリズムをトリガーし、より多くの塩レベルと反復を指定できるようにします。
該当するシナリオ:
また、古いシステム用に準備されていますが、標準のDESよりもわずかに強力です。
まだ新しいプロジェクトでの使用をお勧めしません。
使い方:
$hash = crypt('mypassword', '$1$someSalt$');
説明:
塩が1ドルで始まると、 Crypt()はMD5ハッシュアルゴリズムを使用します。出力の長さは34文字です。
該当するシナリオ:
パフォーマンスの要件が高いが、それほど高い安全要件を持たない環境。
より安全なアルゴリズムに徐々に置き換えられており、機密情報の保存には推奨されていません。
使い方:
$hash = crypt('mypassword', '$2y$10$usesomesillystringforsalt$');
説明:
$ 2A $ 、 $ 2B 、または$ 2Y $から始まる塩は、BlowFishアルゴリズム(つまりBCRYPT)を使用して表されます。数値10はコスト係数であり、計算の複雑さを示し、デフォルト範囲は通常4〜31です。
該当するシナリオ:
ユーザーパスワード暗号化に推奨されます。
セキュリティが高く、コストファクターの調整をサポートし、ブルートフォースの亀裂に効果的に抵抗できます。
使い方:
// SHA-256
$hash256 = crypt('mypassword', '$5$rounds=5000$mysalt$');
// SHA-512
$hash512 = crypt('mypassword', '$6$rounds=5000$mysalt$');
説明:
5ドルから始まることはSHA-256を意味し、 6ドルから始めることはSHA-512を意味します。反復回数をラウンドパラメーターで調整して、計算コストを増やすことができます。
該当するシナリオ:
外部ライブラリを導入する必要なく、高いセキュリティが必要な状況。
比較的ゆるいパフォーマンス要件を備えたバックエンド暗号化処理。
一部のLinuxシステムのユーザーパスワード暗号化に使用されます。