検索
ホームページphp教程php手册PHP で crypt() を使用してユーザー認証を実装する

PHP アプリケーションを開発するときに新しい暗号化アルゴリズムを自分で開発したくない場合は、PHP が提供する crypt() 関数を使用して一方向暗号化関数を完成させることもできます。

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;

crypt() は、サポートされるアルゴリズムと対応するソルト パラメーターの長さを示します。

テーブル 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 で紹介したものと同じです。

1
2 3 $user_name=$_POST["user_name"];
4 require_once("sys_conf.inc") //データベース構成情報を含むシステム構成ファイル
5
6 //データベースに接続します
7 $link_id=mysql_connect($DBHOST,$DBUSER,$DBPWD);
8 mysql_select_db($DBNAME) //データベースを選択 my_chat
9
10 //ログインユーザー情報があります
11 $str="select name,password from user where name ='$user_name'";
12 $result=mysql_query($str,$link_id) //クエリを実行
13 @$rows= mysql_num_rows($result); //クエリ結果から取得したレコード数
14 $user_name=$_SESSION["user_name"];
15 $password=$_POST["password" ];
16 $ Salt = substr($password, 0, 2);
17 $password_en=crypt($password,$salt); //crypt() を使用してユーザー パスワードを暗号化します
18
19 //古いユーザーの場合
20 if($rows!=0)
21 {
22 list($name,$pwd)=mysql_fetch_row($result);
23
24 //パスワードが正しく入力されている場合
25 if($pwd==$password_en)
26 {
27 $str="update user set is_online =1 where name ='$user_name' およびパスワード='$password_en'";
28 $result=mysql_query($str, $link_id);//クエリを実行
29 require("main.php"); //チャットページに移動
30 }
31 // パスワード入力エラー
32 else
33 {
34 require("relogin.php");
35 }
36
37 }
38 //新規ユーザーの場合、その情報をデータベースに書き込みます
39 else
40 {
41 $str="ユーザー (名前,パスワード,is_online) に挿入します。values('$user_ name',' $password_en',1)" ;
42 $result=mysql_query($str, $link_id); //クエリを実行
43 require("main.php"); //チャットページに移動
44 }
45 / /データベースを閉じる
46 mysql_close($link_id);
47 ?>

この例は、 で紹介したユーザー情報を保護するための XOR 暗号化アルゴリズムの使用に非常に似ています。前のセクションとその核心部分は第 16 章の 17 行目で、crypt() 関数を使用して暗号化されたパスワードを取得し、データベース内のパスワードと 25 行目の暗号化されたパスワードを比較することでユーザーが正当であるかどうかを確認します。

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

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

12tir.zIbWQ3c

上記は、単純なユーザー認証システムを実装しています。重要な機密情報を保護するために crypt() を使用する場合、デフォルト状態での crypt() の使用は最も安全ではなく、セキュリティ要件が低いシステムでのみ使用できることに注意してください。



声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境