Webを開発するとき、パスワード暗号化はユーザーデータセキュリティを保護する上で重要なリンクです。 PHPは、 Crypt()関数が基本的で非常に有用な暗号化ツールであるさまざまな暗号化方法を提供します。片道で文字列を暗号化でき、パスワードのハッシュによく使用されます。この記事では、 Crypt()関数、基本的な構文、異なる暗号化アルゴリズム、および実際のアプリケーションでの例と予防策の使用を詳細に紹介します。
crypt()は、文字列を暗号化するために使用されるPHPの内蔵暗号化関数です。一方向暗号化アルゴリズムを使用します。つまり、暗号化の結果は不可逆的であり、パスワードなどの機密データを保存するのに非常に適しています。
PHPは、Password_hash()やHash()などの最新の暗号化方法も提供しますが、 Crypt()がどのように機能するかを理解するには、開発者が暗号化の基本を習得するのに役立ちます。
string crypt ( string $string [, string $salt ] )
$文字列:暗号化する必要がある元の文字列。
$ SALT :暗号化に使用される「塩値」を指定するオプションのパラメーター。異なる塩値とアルゴリズムは、最終暗号化の結果に影響します。
Crypt()関数は、提供する塩値形式に応じて、複数の暗号化アルゴリズムをサポートします。以下は、一般的に使用される塩値形式と対応するアルゴリズムです。
DES(デフォルト)
crypt('mypassword', 'rl');
MD5
crypt('mypassword', '$1$usesomesalt$');
ブローフィッシュ
crypt('mypassword', '$2y$10$abcdefghijklmnopqrstuv');
SHA-256
crypt('mypassword', '$5$rounds=5000$anexamplestringforsalt$');
SHA-512
crypt('mypassword', '$6$rounds=5000$anexamplestringforsalt$');
<?php
$password = 'secure123';
$salt = '$2y$10$usesomesillystringforex$';
$hashed = crypt($password, $salt);
echo $hashed;
?>
出力の結果は、暗号化された文字列の文字列です。再度実行されたとしても、結果は同じです。これは、ユーザーがログインして検証するときのパスワード比較に適しています。
パスワードを確認するときは、ユーザーが入力したパスワードを同じ塩値で再クリップする必要があります。次に、データベースに保存されているハッシュ値と比較する必要があります。
<?php
$input_password = 'secure123';
$stored_hash = '$2y$10$usesomesillystringforex$JeW8SuJSvSpEtBCUJ8JXoeK1G5Lmbl9Hz7tpIdAd4wczP8t9UO1nO';
if (crypt($input_password, $stored_hash) === $stored_hash) {
echo 'パスワード検証が成功しました';
} else {
echo 'エラーパスワード';
}
?>
Crypt()を使用する場合は、Blowfish以上のセキュリティアルゴリズムを選択することをお勧めします。
Crypt()は塩値を自動的に生成しません。開発者は手動でそれらを渡す必要があります。
PHP 5.3はアルゴリズムのサポートを改善しましたが、後のバージョンでcrypt()の代わりにpassword_hash()を使用することをお勧めします。
ユーザーが登録すると、暗号化されたパスワードを生成してデータベースに保存できます。
<?php
$password = 'mypassword';
$salt = '$2y$10$' . substr(strtr(base64_encode(random_bytes(16)), '+', '.'), 0, 22);
$hash = crypt($password, $salt);
// 意思 $hash データベースに保存します
echo '正常に登録されています,暗号化パスワードはです:' . $hash;
?>
Crypt()は、PHPによって提供される強力な暗号化関数です。さまざまな塩値形式を提供することにより、複数の暗号化アルゴリズムを使用して文字列を暗号化できます。 Password_hash()などの関数を使用して最新の開発におけるパスワードセキュリティに対処することをお勧めしますが、 Crypt()のメカニズムを理解することは、セキュリティ開発のための優れた基盤を築くのに役立ちます。
Crypt()は、カスタムアルゴリズムを持っているか、古いプロジェクトと互換性がある場合に重要な役割を果たします。ログインシステムの構築、機密データの保存、認証メカニズムの処理など、暗号化関数の合理的な使用は、常にWebサイトセキュリティを確保するための不可欠な部分です。