PHP の crypt() を使用したユーザー認証のコード

WBOY
リリース: 2016-06-13 11:58:29
オリジナル
916 人が閲覧しました

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 $

表面上、crypt() 関数はほとんど役に立たないように見えますが、この関数はシステム パスワードの整合性を保証するために実際に広く使用されています。なぜなら、一方向暗号化パスワードは第三者の手に渡っても平文に戻すことができないため、あまり役に立たないからです。
crypt() を使用してユーザー認証を実装する
前のパートでは、crypt() 関数の機能を簡単に紹介しました。次に、この関数を使用してユーザー認証を実装します。セクション19.2.3で導入されました。

コードをコピーします コードは次のとおりです:



$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 行目の暗号化されたパスワードを比較します。パスワードは等しいため、ユーザーが正当であるかどうかが確認されます。

次に、暗号化されたパスワードがどのようになるかを例で見てみましょう。

たとえば、ユーザー名が Rock、パスワードが 123456 の場合、暗号化されたパスワードは次のようになります。

12tir.zIbWQ3c

上記では、単純なユーザー認証システムが実装されています。 。重要な機密情報を保護するために crypt() を使用する場合、デフォルト状態での crypt() の使用は最も安全ではなく、セキュリティ要件が低いシステムでのみ使用できることに注意してください。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート