密码加密3种方法

发布于 2024-12-10 09:37:45 字数 767 浏览 0 评论 0原文

一方面我有: http://forums.enterprisdb.com/posts/list/2481.page 这里我们将字段声明为 BYTEA,我们可以解密它,加密是在数据库级别的。

另一边: https://www.owasp.org/index.php/Hashing_Java 此处为 varchar,我们仅比较哈希值以进行授权。

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

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

On one side I have:
http://forums.enterprisedb.com/posts/list/2481.page
Here we declare field as BYTEA and we can decrypt it and encryption is on db level.

On the other side:
https://www.owasp.org/index.php/Hashing_Java
Here as varchar and we only compare hashes to authorize.

Finally Spring gives http://static.springsource.org/spring-security/site/docs/3.1.x/apidocs/org/springframework/security/crypto/password/StandardPasswordEncoder.html + char secret value applied is the same for every password?

Which is the best approach? (I lean towards Spring since as I understand it encapsulates similar logic as OWASP in few lines of code?)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烂柯人 2024-12-17 09:37:45

PostgreSQL 编码:

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

OWASP 与 Spring:

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

我会使用StandardPasswordEncoder。它更简单,并且与 Owasp 的功能相同。

PostgreSQL encoding:

  • Your application probably will depend on PostgreSQL and maybe you have to rewrite this part if you want to use it with another DBMS.
  • If the PostgreSQL is on another machine you should consider using some form of secure communication between the application and the DBMS because the passwords are transferred between them as plain text.

OWASP vs Spring:

  • They are very similar.
  • Both use salt.
  • Spring use a secret (Owasp not).
  • Of course you could modify Owasp to use a secret if you need that or you can use the StandardPasswordEncoder without secret.
  • Spring's encode() returns only one string which contains the salt too (as usual in unix/linux) while Owasp requires an additional database attribute for the salt value.
  • Spring is simpler and maybe it's better maintained than the Owasp web article from 2008.
  • Owasp mixes functionalities: it encodes/checks the passwords and contains a lot of JDBC code too.
  • Spring just encodes/checks the passwords and your responsibility is the password storage. But maybe your framework does that for you or you could write it for yourself.

I'd use StandardPasswordEncoder. It's more simple and does the same as Owasp.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文