2011-08-02 18 views
4

パスワードを暗号化する最も安全な一方向暗号化アルゴリズムは何ですか?一方向のパスワード暗号化のアルゴリズム

MD5とSHA(1..512)は頻繁に使用されますが、暗号化されたパスワードに対するブルートフォース攻撃を防止するために悪い速度を出すように設計されています。

アルゴリズムがあまりにもエキゾチックであってはいけないので、Java、.NET、Pythonなどの一般的なプログラミング言語/ランタイムで使用できます。

+1

どのような方法であれ、あなたは良い塩が必要です。 SHAは私がパスワードのような小さなデータセットでハッシュ方法はそれほど重要ではないと思います。 –

+3

NB:MD5とSHAは暗号化アルゴリズムではなく*ハッシュ*アルゴリズムです。 IIRC少なくともMD5は辞書攻撃に対して脆弱であることが知られています。 –

+2

これは実際にsecurity.SEの以前の質問と重複しています。http://security.stackexchange.com/q/4789/485 - 移行とクローズを複製として提案します。 –

答えて

8

BCryptまたはSCrypt。どうして?なぜなら、彼らは高速の代わりにゆっくりと設計されていたからです。

も参照してください。How to securely hash passwords?

+3

PBKDF2も問題ありません。 –

+1

パスワードベリファイアにPBKDF2を使用する方法についてはいくつかの議論があります。[PBKDF2ベースのSystem.Cryptology.RFC2898DeriveBytes()は、従来の方法よりもUnicodeパスワードハッシングの方が優れていますか?](http://security.stackexchange.com/questions/2051/is-pbkdf2-based-system-cryptology-rfc2898derivebytes-for-unicode-passw/2056#2056)と[どのパスワードハッシング方法を使用すればよいですか?](http://security.stackexchange.com/questions/5605/which-password-hashing-method-i-use)を使用する必要があります。 – Jacco

1

security.stackexchange.comに人々はbcryptの、暗号方式を使用している、それは非常に遅いですので。

参照:http://codahale.com/how-to-safely-store-a-password/http://www.openwall.com/crypt/

はまた、この質問を見てみましょう:他に読み取ることができるようhttps://security.stackexchange.com/questions/4781/do-any-security-experts-recommend-bcrypt-for-password-storage

のみハッシュ

SHA512 vs. Blowfish and Bcrypt

https://security.stackexchange.com/questions/211/how-to-securely-hash-passwords

+2

bcrypt、scrypt、またはPBEで、何千回もハッシュすることは、まだお勧めできません(http://stackoverflow.com/questions/6869129/encryptingmd5-multiple-times-can-improve-security/6877004#6877004)。 – emboss

2

は、あなたを救うません。トピックに関する投稿。

bcryptとscryptは本当に良い選択ですが、ほとんどの言語ではサポートされていません。実際にそれらをサポートするライブラリを見つけることは問題ではありませんが。これらの2つに加えて、PKCS#5に記載されているようなパスワードベースの暗号化(PBE)、理想的にはPBKDF2を使用することができます。ほとんどの場所でPBEの組み込みサポートが提供されるはずです。

+1

Bcryptは、すぐに使用することは難しいかもしれませんが、Ruby、Python、。NETとMono、Java、Perl、PHPとErlang少なくとも - 最初の(未分化の)リンクを参照してください[安全にパスワードを保存する方法| codahale.com](http://codahale.com/how-to-safely-store-a-password/) – nealmcb