私は自分のアプリに「ログイン」しようとしていて、自分のデータベースに入力するユーザーのパスワードを暗号化する最良の方法はなんですか?私はGoogleで多くの方法を見つけましたが、どれがベストであるか分かりません。パスワードを暗号化する
答えて
私は片道で行くだろうsalted hash
たとえば、SHA1ハッシュを使用すると、パスワードを元のパスワードに戻すことができないハッシュとして保存する方法があります。ユーザーがパスワードを入力すると、パスワードに同じSHA1ハッシュを実行し、DBに格納されているものとそのハッシュを比較します。一致した場合は、パスワードが正しいことになります。
ハッシュをさらに安全にするには、塩を追加することができます。これは基本的にランダムに生成された値で、ユーザーごとに生成し、アカウントを作成してユーザーレコードに保存します。パスワードのハッシュを作成するときは、最初にパスワードと塩を結合し、この結合された値をハッシュします。ユーザーを認証するには、入力されたパスワードとユーザー用に保存されたsaltを結合し、結合された値に対してハッシュを実行して比較します。
塩をミックスに追加することで、塩分の部分が異なるため、同じになる可能性のあるパスワードのハッシュが異なるハッシュになるようにします。したがって、2人のユーザーが同じパスワード「Password1234」を持っている場合、2つのユーザーの格納されたハッシュは同じではないため、2人のユーザーが同じパスワードを持つことは確認できません。
の.NET Frameworkが提供する+1、SHA1の使用はお勧めしません。私はブローフィッシュ/二枚貝またはSHA-2をお勧めします。参照:http://stackoverflow.com/questions/1561174/sha512-vs-blowfish-and-bcrypt – Falcon
財布SHA1/SHA2は高速であり、ブルートフォースの影響をより受けやすいので最適ではありません。だから良いKDFを使う方が良いです。 – CodesInChaos
これはhttp://www.obviex.com/samples/EncryptionWithSalt.aspxで開始するのに最適な場所です – Tom
鍵のサイズやスピードを絶対に必要としない限り、新しいアプリケーションでMD5を使用する理由はまったくありません。 –
後方互換性を除いてMD5を使用する理由はありません。新しいコードでは、SHA-1またはSHA-2 – CodesInChaos
SHA-2が好きです。 .NET Frameworkは、['System.Security.Cryptography'](http://msdn.microsoft.com/en-us/library/system.security.cryptography.aspx)名前空間で組み込み関数としてSHA256およびSHA512を提供します。 –
MD5のalgorithemを使用して、私はそれは良い標準化されたキー導出-機能を使用していますRfc2898DeriveBytes
を使用することをお勧めします、そして現代のハッシュ。レインボーテーブルを防ぐために、パスワードに加えて塩を渡す必要があります。そして、それはあなたのために塩とパスワードを混ぜるので、自分でそれをする方法を理解する必要はありません。
RFC2898はPBKDF2としても知られています。 – caf
bcryptを使用してください。いいえ、実際には、独自の方法を構築するためのアイデアを一切削除してください。use bcrypt世界にはすでに自宅で安全でないパスワードハッシングスキームがあります。
もちろん、ユーザーごとの塩を使って塩漬けされたパスワードハッシュを保存すると、すべてうまくできています。しかし、塩漬けは虹のテーブル攻撃を防ぐだけであり、暴力を防ぐことはできません。したがって、逆説的に、パスワードハッシュを生成または検証するための高速な方法を使用する必要はありません。 MD5、SHA、何でも - 彼らはすべて高速です。私の後でやり直してください:bcryptを使ってください。
BcryptとPBKDF2(別名RFC2898)はどちらもきれいなKDFです。しかし、実際のKDFを使用してください! – caf
あなたは、RSAアルゴリズムを使用することができます。http://www.codeproject.com/KB/security/RSACryptoPad.aspx
- 1. OpenAM:RESTFUL API - 暗号化/暗号化パスワード
- 2. パスワードの暗号化
- 3. パスワードの暗号化
- 4. パスワードの暗号化/復号化スプリングセキュリティ
- 5. パスワードの暗号化方法
- 6. DESとパスワードで暗号化
- 7. QMLパスワードの暗号化
- 8. Powerbuilder Datawindowパスワードの暗号化
- 9. POSTでパスワードを暗号化するDjango
- 10. データベースのパスワードを暗号化する
- 11. 保存された暗号化されたパスワードと一致するようにパスワードを暗号化します。
- 12. gspのパスワード値を暗号化
- 13. Cソースコードのパスワードを暗号化
- 14. Springを使用したパスワードの暗号化/復号化
- 15. PHP暗号パスワード
- 16. PHP MD5パスワードの暗号化とDBエントリ
- 17. 暗号化されたパスワードのセキュリティ
- 18. ログイン中のパスワードの暗号化
- 19. 一方向のパスワード暗号化のアルゴリズム
- 20. カスタムMagento管理者パスワードの暗号化
- 21. カスタム認証とパスワード暗号化laravel 5
- 22. Sybase IQと暗号化されたパスワード
- 23. ASP.NET MVC 3でのパスワードの暗号化
- 24. 単純なパスワードの暗号化
- 25. パスワード用のクライアント/サーバー暗号化
- 26. iSeries(AS/400)データベース・ファイル:パスワード暗号化
- 27. Javaでのキーストアのパスワード暗号化
- 28. アプリケーションとプロキシサーバーのパスワード暗号化
- 29. クライアント/サーバーアプリケーションでSMTPパスワードの暗号化/復号化
- 30. Java - 外部サイトのパスワードの暗号化/復号化
あなたが「暗号化」、パスワードや「ハッシュ」のパスワードが必要ですか?これは同じではありません。 Hashedはより安全ですが、いつか読めるようにする必要がある場合は、Encryptedを使用してください。以下のほとんどの答えは、ハッシュが必要だと仮定しています。あなたは明らかにすることができます:)? –
私はハッシュが欲しいです。より安全です:) – Alex