9

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

  1. 当今最常见的用户密码加密类型是什么?我知道MD5在过去几年中已经很丰富了。
  2. 用户类中字段“密码”的正确数据类型是什么(因此,在 postgresql 数据库中)?

谢谢

4

3 回答 3

9

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

至于 DB 类型,您可以放心地将其视为字符串。

于 2012-08-20T15:47:57.243 回答
2

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

此外,当我为用户添加注册时,我确保密码具有一定程度的复杂性(至少 8 个最小标记、大写字母、一个数字)。等你基本上命名它?但只是想指出安全不仅仅是加密,一半的蛋糕是确保用户将使用复杂的密码:)

于 2012-08-20T16:38:45.183 回答
0

您应该使用 SHA-x 算法对密码进行哈希处理。这或多或少是 MD5 的替换散列函数。

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

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

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

HIH

于 2012-08-20T15:51:57.670 回答