現在の位置: ホーム> 最新記事一覧> Crypt()を使用して、シンプルなユーザー認証システムを実装します

Crypt()を使用して、シンプルなユーザー認証システムを実装します

M66 2025-05-24

シンプルなユーザーシステムを開発する場合、パスワードの暗号化されたストレージはセキュリティの基礎の1つです。 PHPは非常に実用的な暗号化関数Crypt()を提供します。これにより、基本的なパスワード暗号化と検証関数をすばやく実装できます。この記事では、簡潔な例を使用して、Crypt()関数を使用してシンプルなユーザー認証システムを構築する方法を説明します。

1。crypt()関数を理解します

Crypt()は、通常はパスワード暗号化に使用される一方向の文字列暗号化のPHPの関数です。基本的な構文は次のとおりです。

 string crypt(string $string, string $salt)

その中でも、 $文字列は暗号化する必要がある文字列であり、 $塩は暗号化の結果に影響を与えるために使用される「塩」値であり、さまざまな暗号化アルゴリズム(Blowfish、MD5、SHA-256、SHA-512など)をサポートします。

2。登録ロジックを作成します

登録するときは、パスワードを暗号化して保存する必要があります。簡単な登録例は次のとおりです。

 <?php
// ユーザーが入力したパスワード
$password = 'user_password123';

// 使用 Blowfish アルゴリズムは暗号化パスワードを生成します
$hash = crypt($password, '$2y$10$' . bin2hex(random_bytes(11)));

// データベースに保存するにはシミュレーションします
file_put_contents('users.txt', "username:$hash\n");

echo "登録されたユーザー,パスワードは暗号化されて保存されます。";
?>

ここでは、$ 2Y $ 10 $で始まる塩接頭辞を使用します。これは、BlowFishアルゴリズム(パスワード暗号化に推奨)を使用することを意味します。 Random_bytes(11)はランダム塩値を生成し、パスワードが同じであっても、各暗号化の結果が異なることを確認します。

3.ログイン検証ロジックを作成します

ユーザーがログインすると、入力されたパスワードを同じ塩を使用して暗号化し、データベースのパスワードハッシュと比較する必要があります。

 <?php
// ユーザー入力
$input_username = 'username';
$input_password = 'user_password123';

// から“データベース”情報を読んでください
$data = file('users.txt');
foreach ($data as $line) {
    list($stored_username, $stored_hash) = explode(':', trim($line));

    if ($input_username === $stored_username) {
        // ストレージを使用します hash として salt 再び入力されたパスワードを暗号化します
        if (crypt($input_password, $stored_hash) === $stored_hash) {
            echo "正常にログインします,おかえり $input_username!";
        } else {
            echo "エラーパスワード。";
        }
        exit;
    }
}

echo "ユーザーは存在しません。";
?>

このように、攻撃者がパスワードハッシュを盗んだとしても、元のパスワードをハッシュから直接復元することはできません。同時に、複数のユーザーが同じパスワードを使用していても、各ユーザーは異なる塩を使用するため、保存されたハッシュ値は異なります。

4.安全性をさらに強化します

crypt()は基本的なセキュリティを提供できますが、PHPは5.5からpassword_hash()およびpassword_verify()を使用することをお勧めします。彼らはまだ下部にcrypt()を使用していますが、カプセル化はより完全で安全です。

しかし、一部の制限された環境(古いサーバーや手動で塩を制御する必要があるシステムなど)では、 Crypt()は依然として効果的なツールです。

5。概要

上記のコンテンツを通じて、PHPのcrypt()関数を使用して、簡単なユーザー検証システムをすばやく構築できることがわかります。

  • パスワードを暗号化し、登録時に保存します。

  • パスワードを再構築し、ログインするときに同じ塩値と比較します。

  • ランダム塩と組み合わせて、暗号化強度を高め、虹のテーブル攻撃を防ぎます。

Password_hash()は最新のプロジェクトにはより推奨されますが、特に低レベルのカスタマイズが必要な場合、 Crypt()の基礎となるメカニズムを理解することは依然として非常に役立ちます。