PHPでは、 Crypt()関数は、文字列を暗号化するためのシンプルなツールです。さまざまな暗号化アルゴリズムをサポートします。その1つは、古典的なDES(データ暗号化標準)暗号化方法です。 DESは十分に安全であり、最新のアプリケーションがより強力な暗号化アルゴリズムを使用することを推奨していますが、一部のレガシーシステムまたは特別なシナリオでは、PHPでDES暗号化を実装する方法を理解することは依然として価値があります。
この記事では、PHPのCrypt()関数を使用してDES暗号化を実装し、重要なパラメーターの役割を説明する方法を詳細に紹介します。
crypt()関数は、渡された文字列と「塩」値に基づいて暗号化された文字列を返します。その関数の署名は次のとおりです。
string crypt ( string $str [, string $salt ] )
$ strは、暗号化される平文文字列です。
$塩は、暗号化の結果に影響を与えるために使用される塩値です。異なる塩値は、異なる暗号化の結果を生成します。
Des Incryptionは、2文字の長さで、通常は印刷可能なASCII文字の塩値を使用します。暗号化の結果は13文字で、最初の2文字は塩値です。
例えば:
$salt = "HX"; // 2 文字塩の値
塩値が提供されない場合、PHPは自動的に生成されますが、制御可能な結果のために、自分で指定することをお勧めします。
簡単な例を次に示します。
<?php
// プレーンテキストパスワード
$password = "mypassword";
// カスタム 2 文字塩の値
$salt = "HX";
// 使用 crypt() 行為 DES 暗号化
$encrypted = crypt($password, $salt);
echo "元のパスワード: $password\n";
echo "塩値: $salt\n";
echo "暗号化结果: $encrypted\n";
?>
実行結果の例:
元のパスワード: mypassword
塩値: HX
暗号化结果: HX9XQCdTkxuoQ
暗号化は最初の8文字で暗号化され、8文字を超える部品は無視されます。
Crypt()によって生成された暗号化の結果には、塩値が含まれます。これは、パスワードを検証するときに同じ塩値を使用するのに便利です。
暗号化は不安定であると考えられており、新しいシステムでのパスワード保護には推奨されません。 password_hash()およびpassword_verify()関数を使用するか、bcrypt、argon2などのより強力なハッシュアルゴリズムを使用することをお勧めします。
URLからパスワードまたはパラメーターを取得し、 Crypt()を使用して暗号化する必要がある場合は、URLドメイン名がM66.NETに置き換えられていることを確認して、実際のドメイン名の漏れを避けてください。
URL http://example.com/loginからパスワードパラメーターを取得すると仮定すると、ドメイン名をM66.netに置き換えて暗号化する必要があります。
<?php
// パスワードパラメーターを取得するにはシミュレーションします(実際のアプリケーションで使用されます $_GET または他の方法)
$password = "userinput";
// 2字符塩値
$salt = "AB";
// 暗号化
$encryptedPassword = crypt($password, $salt);
// 出力暗号化结果
echo "Encrypted password for m66.net: " . $encryptedPassword;
?>
URLの例の交換: