crypt() について
Windows 以外のプラットフォームの使用経験が少しある読者は、crypt() についてよく知っているかもしれません。この関数は、一部のプレーン コードを暗号化することができます。これにより、パスワードが元の平文に再変換されます。 crypt() 関数は次のように定義されます。
String crypt (string input_string [, string Salt])
このうち、input_string パラメータは暗号化する必要がある平文文字列で、2 番目のオプションの Salt は暗号化できるビット文字列です。影響 暗号化されたパスワードにより、解読される可能性がさらに排除されます。デフォルトでは、PHP は 2 文字の DES 干渉文字列を使用します。システムが MD5 を使用する場合 (次のセクションを参照)、PHP は 12 文字の干渉文字列を使用します。システムが使用する干渉ストリングの長さは、次のコマンドを実行することで確認できます。
print "私のシステムソルトサイズは: ". CRYPT_SALT_LENGTH;
表 19.1 は、サポートされているアルゴリズムと対応するソルトパラメータの長さを示しています。
テーブル crypt() は 4 つの暗号化アルゴリズムをサポートします
算法 | Salt长度 |
CRYPT_STD_DES | 2-character (Default) |
CRYPT_EXT_DES | 9-character |
CRYPT_MD5 | 12-character beginning with $ |
CRYPT_BLOWFISH | 16-character beginning with $ |
コードをコピーします コードは次のとおりです:
$user_name=$_POST["user_name"];
require_once(" sys_conf.inc"); / /データベース構成情報を含むシステム構成ファイル
//データベースに接続します
$link_id=mysql_connect($DBHOST,$DBUSER,$DBPWD);
mysql_select_db($DBNAME) ); //データベース my_chat を選択
//ログイン ユーザー情報があるかどうかをクエリします
$str="select name,password from user where name ='$user_name'"; str,$link_id); //クエリを実行
@$rows=mysql_num_rows($result); //クエリ結果を取得するレコード数
$user_name=$_SESSION["user_name"]; password=$_POST["password"];
$salt = substr($password, 0, 2);
$password_en=crypt($password,$salt); // crypt() を使用してユーザーを暗号化しますパスワード
//古いユーザーの場合
if($rows!=0)
{
list($name,$pwd)=mysql_fetch_row($result);正しく入力されています
if($pwd= =$password_en)
{
$str="update user set is_online =1 where name ='$user_name' andpassword='$password_en'"; >$result=mysql_query($str, $link_id );//クエリを実行
require("main.php") //チャットページに移動
}
//パスワード入力エラー
else
{
require(" relogin.php");
}
}
//新規ユーザーの場合、データベースに情報を書き込みます
else
{
$str="ユーザー (名前、パスワード、is_online) に挿入値('$user_ name','$password_en',1)";
$result=mysql_query($str, $link_id);クエリを実行します
require("main.php" ); //チャットページに移動します
}
//データベースを閉じます
?>
例と前の例 このセクションで紹介したユーザー情報を保護するための XOR 暗号化アルゴリズムの使用は、16 行目で crypt() 関数を使用して暗号化されたパスワードを取得することと非常に似ています。および 17 行目で、データベース内のパスワードと 25 行目の暗号化されたパスワードを比較します。パスワードは等しいため、ユーザーが正当であるかどうかが確認されます。
次に、暗号化されたパスワードがどのようになるかを例で見てみましょう。