用于在数据库中存储密码的加密方法

时间:2012-01-22 08:16:26

标签: java database encryption passwords password-protection

  

可能重复:
  What function to use to hash passwords in MySQL?
  Secure password storage

加密密码后,将密码存储到数据库的最佳机制是什么?什么是加密方法和Java实现?

2 个答案:

答案 0 :(得分:7)

从不存储加密密码。存储安全的单向哈希,例如SHA-1(有一些小的安全问题),或者更新,更安全的变体之一。

这样做实际上是针对您可能受到的若干监管要求,例如PCI DSS,如果您涉及信用卡(进行任何电子商务?)。

http://www.mindrot.org/projects/jBCrypt/这样的东西也可能有用。

对于Borealid的评论,

+1 - 即使使用散列,散列也需要正确完成,并且必须包含“salt”(其他随机数据以防止一部分攻击)。 jBCrypt会为你做这个(和其他类似的库一样)。

答案 1 :(得分:1)

存储密码的常用方法是使用消息摘要算法对其进行哈希处理。我建议使用SHA1,或者如果你需要更多的字节( - >更少可能的冲突),SHA256或512.这是Java中的SHA1实现:

http://www.anyexample.com/programming/java/java_simple_class_to_compute_sha_1_hash.xml

还建议你使用盐来制作密码哈希更难。说明:

http://en.wikipedia.org/wiki/Salt_(cryptography