原住民をざわつかせないように、私の「質問」を修正します。
最近、インターネット上には非常に多くのリソース (SO を含む) があるようで、質問に対する "an" 回答を見つけるのは簡単かもしれませんが、その回答が有効であるか、最新のものであるかを確認するにはどうすればよいでしょうか?
特によく聞かれる分野の 1 つは、データベース ストレージで準備するために PHP でハッシュと暗号化を適切に処理する方法です。SO に関する一般的な回答の 1 つは、「まだ php.net にアクセスしたことがありますか?」というものです。これは通常、誰かが最も簡単な質問をする質問になることを理解していますが、いくつかの説明が矛盾しているように見え始め、さらに重要なことに、ユーザーの例が古くなっています (2008 年から 2009 年までの多く)。
例: パスワードハッシュを使用する理由と方法を調べる場合: http://www.php.net/manual/en/faq.passwords.php#faq.passwords.fasthash
要約すると、sha1 と md5 は高速で計算効率の高いハッシュ方法であり、パスワードのハッシュには適していないことがわかりました。推奨される方法は、crypt() 関数を使用することです。
crypt() および特にフグのハッシュについてさらに学習する場合、このページに記載されているルールは次のとおりです。
http://www.php.net/manual/en/function.crypt.php
- 私の塩を$ 2a $から始めます
- 2つの数値で続行します(以下のユーザーはこれの重要性を述べていますが、php.netはそうではありません)
- $ を続けてください
- 22文字の英数字を入力してください
さらに読むと、次の例が得られます。
<?php
if (CRYPT_BLOWFISH == 1) {
echo 'Blowfish: ' . crypt('rasmuslerdorf', '$2a$07$usesomesillystringforsalt$') . "\n";
}
?>
同じページの例は、使用するように指示されたばかりの規則に従っていないようです (「$2a$07$」の後の 26 文字。
戻り値は次のとおりです。
フグ:
$2a$07$usesomesillystringfore2uDLvp1Ii2e./U9C8sBjqp8I90dH6hi
基本的に、文字列自体は実際に変更されますが、SALT 値のほぼ全体 (上記の最初の 22 文字) は大きく開いています。これにより、実際の文字列が何であるかを判断するのがいくらか簡単になりませんか?
さらに重要なことに、これは 1 つの例にすぎませんが、最終的に、PHP.net などのリソースにどの程度依存する必要があるのでしょうか?
友人のムガトゥがかつて言ったように、「私はクレイジーな薬を飲んでいるような気がします」.
注:上記のページは最初の投稿以降に編集されたため、最初の質問と提供された例から変更されていないことを保証することはできません.