【问题标题】:Password Encryption 3 approaches密码加密 3 种方法
【发布时间】:2011-12-08 10:26:15
【问题描述】:

一方面我有: http://forums.enterprisedb.com/posts/list/2481.page 这里我们将字段声明为 BYTEA,我们可以对其进行解密,并且加密是在 db 级别。

另一方面: https://www.owasp.org/index.php/Hashing_Java 这里作为varchar,我们只比较hash来授权。

最后 Spring 给出了 http://static.springsource.org/spring-security/site/docs/3.1.x/apidocs/org/springframework/security/crypto/password/StandardPasswordEncoder.html + char 应用的密码值对于每个密码都相同吗?

哪种方法最好? (我倾向于 Spring,因为据我了解,它在几行代码中封装了与 OWASP 相似的逻辑?)

【问题讨论】:

  • “最好”对您来说意味着什么?
  • 代码更少,更安全。

标签: passwords password-encryption


【解决方案1】:

PostgreSQL 编码:

  • 您的应用程序可能依赖于 PostgreSQL,如果您想将它与另一个 DBMS 一起使用,您可能必须重写这部分。
  • 如果 PostgreSQL 在另一台计算机上,您应该考虑在应用程序和 DBMS 之间使用某种形式的安全通信,因为密码在它们之间以纯文本形式传输。

OWASP 与 Spring:

  • 它们非常相似。
  • 两者都使用盐。
  • Spring 使用一个秘密(Owasp 不是)。
  • 当然,如果需要,您可以修改 Owasp 以使用密码,或者您可以使用不带密码的 StandardPasswordEncoder
  • Spring 的encode() 只返回一个包含盐的字符串(在 unix/linux 中通常如此),而 Owasp 需要一个用于盐值的附加数据库属性。
  • Spring 更简单,也许比 2008 年的 Owasp 网络文章维护得更好。
  • Owasp 混合了多种功能:它对密码进行编码/检查,并且还包含大量 JDBC 代码。
  • Spring 只是对密码进行编码/检查,而您的责任是密码存储。但也许您的框架会为您执行此操作,或者您可以自己编写它。

我会使用StandardPasswordEncoder。它更简单,并且和 Owasp 一样。

【讨论】:

    猜你喜欢
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-06
    • 1970-01-01
    • 2016-11-18
    • 1970-01-01
    • 2011-07-10
    相关资源
    最近更新 更多