私は、自分のウェブサイトでユーザーのパスワードをハッシュし、データベースに挿入するより安全な方法を探していました。私は利用可能なすべてのハッシュ方法を調べました。その遅さのためにbcryptが最高だと言われています。もし私が最高のセキュリティを必要としないが、それでも安全を保っていれば、私はそれを考えていました。 sha512を使用してからmd5をそのハッシュに使用するとどうなりますか?私がハッシュの順序を逆転させるかどうかは重要だろうか?それぞれの操作に別々の塩を使用することを覚えておいてください。これはどれくらい安全でしょうか?同じことをする他の組み合わせはありますか?SHA512とMD5ハッシング
答えて
カスタムメソッドを作成すると、微妙なバグが発生してストレージメソッドが脆弱になる可能性が高くなります。遅くなるまで、微妙なバグを見つけられないので、努力する価値はありません。試してテストしたものを使う方がはるかに優れています。パスワードを保存するとき
は一般的に、これらは
- 、使用bcrypt選択肢です。
- 塩漬けの強化されたハッシュを使用します。
最初の方法は簡単ですが、bcryptを使用してください。ほぼすべての言語でサポートされており、セキュリティのために広く使用され、テストされています。
2番目の方法では、汎用目的のハッシュ関数(SHA-2ファミリ以上、としてMD5またはSHA-1ではなく)を使用する必要があります。HMACは、独自の塩を作成し、ハッシュ関数を何度も繰り返して(100,000など)、速度を遅くします(key stretching/strengthening)。
(擬似コード)
sofar = hash("sha512", user_salt + site_salt + input_password);
iterations = 100000; // Should be changed based on hardware speed
while (iterations > 0)
{
sofar = hash("sha512", user_salt + site_salt + sofar);
iterations--;
}
user.save("password", "$sha512$" + user_salt + "$" + iterations + "$" + sofar);
各反復は前回の反復に依存しているため、誰かがそれを破るために強引な方法を並列化できません。同様に、処理の速度が遅くなるように、ハードウェアの速度に基づいて反復回数を変更する必要があります。パスワードのハッシュに関しては、遅い方が良いです。
要約
bcryptを使用してください。
私はMD5を全く採用していないのです。壊れている。しかし、複数ラウンドが明らかに強いです。しかし、2ラウンドからの改善はそれほど大きな違いはありません。 SHA512のロットとロットの適用は良いでしょう。あなたが代わりにユーザーのパスワードの長さを見て、あなたはまだ行っていない場合は、パスワードを塩漬けしなければならない
Is "double hashing" a password less secure than just hashing it once?は、アルゴリズムの複数回の詳細な解説を提供します。
現実には、SHA-512のパスワードが壊れていて、最初にパスワードが表示されないようにもっと重要なことがあると思われます。システムはSQLインジェクションから安全です。特権エスカレーションなど
あなたはそれに私を打ち負かす。その投稿は良いものです。 – Dessus
それは良い考えのように聞こえる。ありがとう! – Sneitzke38
- 1. 秘密鍵でSHA512ハッシング
- 2. PHP - MD5、SHA、ハッシングのセキュリティ
- 3. PHPコードmd5ハッシングの説明
- 4. MD5のハッシングとPythonでの比較
- 5. MD5ハッシングを使用するプロトコルはありますか?
- 6. ハッシングとリニアプロービング
- 7. PHP MD5とMySQLのmd5
- 8. PythonのSHA512セキュリティ
- 9. MD5は、4バイトと8バイトのキーを16バイトの値にハッシングします。衝突のチャンスは何ですか?
- 10. PHP Bcryptハッシング
- 11. msアクセスでハッシング
- 12. 逆ハッシング関数
- 13. C#MD5とObjective Cの矛盾MD5
- 14. MD5パッディングとリトルエンディアン
- 15. ハッシングVSインデックス付け
- 16. LaravelでパスワードにMD5ハッシングを使用するにはどうすればよいですか?
- 17. SHA512ハッシュのVBタイプ設定
- 18. AndroidとPHPのmd5
- 19. MD5のチェックサムと塩
- 20. OSXとのopenssl md5の
- 21. MD5とブローフィッシングの暗号化?
- 22. エクリプス/ AntのMD5は、他のMD5に
- 23. MD5フィンガープリント
- 24. SHA512ハッシュto C#の文字列
- 25. SHA512の移植Javascriptの実装をActionscript
- 26. データベースにSHA512パスワードハッシュを保存する
- 27. C#とmysqlで同じsha512を作成します
- 28. python hashlibとsha512sumツールの間のSHA512の相違
- 29. クライアント/サーバーアプリケーションのユーザーパスワードをハッシングする
- 30. Pythonでの双方向ハッシングのベストプラクティス?
いいえ私はbcryptを使用します。助けてくれてありがとう! – Sneitzke38