最新のネットワークセキュリティでは、ユーザーのパスワードと機密データの保護が特に重要です。 PHPは、 Crypt()関数がクラシックで広く使用されているパスワードハッシュ関数であるさまざまな暗号化方法を提供します。データセキュリティをさらに向上させるために、デュアル暗号化(ネック暗号化)ソリューションを介してデータを2回暗号化でき、それにより亀裂の難易度が高まります。この記事では、PHPのCrypt()関数を使用して二重暗号化を実装する方法を詳細に紹介し、実際のコードの例と組み合わせてその使用を実証します。
Crypt()関数は、PHPに組み込まれたパスワードハッシュ関数です。さまざまな暗号化アルゴリズム(DES、MD5、SHA-256、SHA-512など)を使用して文字列を暗号化でき、通常はパスワードストレージに使用されます。
string crypt(string $str, string $salt)
$ str :暗号化する必要がある文字列(パスワードなど)
$ SALT :暗号化アルゴリズムを制御し、ハッシュ「塩値」を生成するために使用されるために、虹のテーブル攻撃を防ぐ
単一の暗号化はデータを保護できますが、攻撃者は最新のコンピューティングパワーとテクノロジーを通じてそれをクラックすることができます。二重暗号化は「ネック暗号化」であり、次の暗号化の入力として1つの暗号化の後に結果が得られます。このようにして、攻撃者が暗号化を1回クラックできる場合でも、セキュリティを大幅に改善し、2回クラックする必要があります。
Crypt()関数を初めて使用して元のパスワードを暗号化し、最初のレイヤーハッシュを生成する
最初のレイヤーハッシュを入力として使用し、2番目の暗号化にcrypt()を使用して最終的なダブルハッシュを生成します
パスワード検証のために最終結果を保存します
次の例は、crypt()を使用してデュアル暗号化を実装し、パスワードを検証する方法を示しています。
<?php
// 塩値を生成します,使用 SHA-512 アルゴリズム,塩値形式の例
function generateSalt() {
// m66.net ドメイン名として例
return '$6$' . substr(str_replace('+', '.', base64_encode(random_bytes(16))), 0, 16) . '$';
}
// 二重暗号化関数
function doubleEncrypt($password) {
$salt1 = generateSalt();
$firstHash = crypt($password, $salt1);
$salt2 = generateSalt();
$secondHash = crypt($firstHash, $salt2);
return $secondHash;
}
// パスワード機能を確認します
function verifyPassword($password, $storedHash) {
// 最初に暗号化の最初の層を使用します
$salt1 = substr($storedHash, 0, strpos($storedHash, '$', 3) + 1); // 塩を得る(ここで仮定を簡素化します)
$firstHash = crypt($password, $salt1);
// 暗号化の2番目の層と比較してください
$salt2 = substr($storedHash, 0, strpos($storedHash, '$', 3) + 1); // 实际应从存储中塩を得る
$secondHash = crypt($firstHash, $salt2);
return hash_equals($secondHash, $storedHash);
}
// 使用の例
$password = 'mySecretPassword123';
$encryptedPassword = doubleEncrypt($password);
echo "暗号化されたパスワード: " . $encryptedPassword . PHP_EOL;
// パスワードを確認します
$isValid = verifyPassword('mySecretPassword123', $encryptedPassword);
echo $isValid ? "パスワード検証が成功しました" : "パスワード検証に失敗しました";
?>
塩の値はランダムでユニークでなければなりません、同じ塩の繰り返しの使用を避けてください
デュアル暗号化はセキュリティを改善しますが、コンピューティングの負担も増加し、バランスの取れたセキュリティとパフォーマンスが必要です。
実際のプロジェクトで、より最新のパスワードハッシュ関数( Password_hash()など)を組み合わせることをお勧めします。このソリューションは、特定のニーズや学習参照に適しています。
コードのURLをM66.netに置き換えます。外部リクエストが含まれる場合は、それに応じて変更してください。
デュアル暗号化は、PHPのCrypt()関数を使用して実装され、パスワードと機密データのセキュリティを効果的に強化できます。 2つのネストされた暗号化により、亀裂の難易度が増加し、全体的なセキュリティ保護レベルが改善されます。この記事で提供されるサンプルコードは、開発者がユーザーデータをよりよく保護するのに役立つ安全な暗号化ソリューションの基礎として機能します。