postgresql:如何存储用户密码?

时间:2012-08-20 15:39:36

标签: java security postgresql web-applications playframework-2.0

我正在使用带有postgresql的play-framework 2.0(java web-framework)。

  1. 用户密码的加密类型是今天最常见的?我知道MD5在过去几年里一直很丰富。
  2. User类中的字段“password”的正确数据类型是什么(因此,在postgresql DB中)?
  3. 感谢

3 个答案:

答案 0 :(得分:9)

您想要对密码进行哈希处理,而不对其进行加密(有关详细信息,请参阅this question)。目前推荐的方法是使用自适应散列算法,如bcryptjBcrypt是一个可以使用的可靠的Java实现。

对于数据库类型,您可以安全地将其视为字符串。

答案 1 :(得分:2)

我将jBcrypt与Play框架内部加密一起使用(从这里得到了想法:https://groups.google.com/forum/?fromgroups#!topic / play-frame / 9KIUwWBjudQ [1-25])

此外,当我为用户添加注册时,我确保密码具有某种程度的复杂性(至少8个miminum,大字母,一个数字)。等你基本上说出来的名字?但只是想指出安全性不只是加密,一半的问题是确保用户使用复杂的密码:)

答案 2 :(得分:0)

您应该使用SHA-x算法来散列密码。这或多或少是MD5的替换散列函数。

MessageDigest.getInstance("SHA-512").digest(toBytes(toDigest)))

但要小心,在对密码进行哈希处理之前为密码添加一个盐,以避免哈希表攻击。

DB列应该是varchar。长度取决于您使用SHA算法的版本

HIH