使用Md5保存密码

Noo*_*oor 5 java sql database encryption password-protection

我正在使用Postgresql,hibernate和Java,我需要存储密码.有人可以建议我如何使用md5加密密码.否则,有更好的方法在数据库中存储安全密码

谢谢

dag*_*gge 9

您不应该使用md5进行密码散列.它专为速度而设计,更容易攻击.请改用bcrypt.此外,您不应该在存储密码后尝试解密密码.请参阅bcrypt页面上的示例,了解如何从用户输入验证密码.有关如何安全存储密码的更多信息.

jBcrypt也非常简单易用.这是你如何散列密码:

BCrypt.hashpw(password_from_user, BCrypt.gensalt());
Run Code Online (Sandbox Code Playgroud)

并验证它:

BCrypt.checkpw(password_from_user, hashed_password_from_database)
Run Code Online (Sandbox Code Playgroud)


Mar*_*ers 5

MD5不是加密算法 - 它是加密哈希函数.这是非常不同的!您可以将散列密码存储在数据库中,但不能(通常)从密码的散列中恢复密码.这是设计的.

在某些情况下可以得到密码根据散列回来-例如,如果密码是一本字典的字可能采用回收字典攻击.如果密码足够短并且使用有限范围内的字符,则暴力彩虹表攻击可以恢复密码.当您存储散列密码时,您应该使用salt密钥强化(例如PBKDF2)来使这些攻击更加困难.

您还应该知道MD5被认为已损坏,建议不要将其用于新应用程序.有更好的选择,例如SHA-256.