您将如何在 Tomcat 5.5 中实现加盐密码

Posted

技术标签:

【中文标题】您将如何在 Tomcat 5.5 中实现加盐密码【英文标题】:How would you implement salted passwords in Tomcat 5.5 【发布时间】:2010-09-17 08:04:48 【问题描述】:

我的 Web 应用程序依赖于容器管理的安全性,我想知道是否可以使用加盐密码。据我所知,只需配置 JDBC 或 DataSource Realm 就可以很容易地将摘要密码存储在数据库中,但是无法为这些摘要添加盐。

有什么建议吗?

编辑:看来我只需要在提问之前再想一想;-)

只需选择谁在进行摘要计算(客户端或服务器)并相应地配置 Tomcat。

【问题讨论】:

【参考方案1】:

Tomcat 5.5 和 6.0 不支持 JDBCRealms 和 DataSourceRealms 中的加盐密码。这是一个已知的错误,建议的补丁似乎可以正常工作,但尚未被接受。

如果您不想应用补丁,您至少可以将其用作实现示例:

Bug 45871 - Support for salted and digested patches in DataSourceRealm

【讨论】:

【参考方案2】:

如果您正在创建和存储摘要,则可以同时创建和存储盐。

您的身份验证表将包含 …… pwdDigest varchar(64), -- 或者 int256 如果你有 hashSalt int64, ....

然后根据您使用的身份验证协议,您可以在获得客户端加密的用户名时将 hashSalt 发送给客户端,或者如果您收到明文,则使用它对密码进行哈希处理。

我不熟悉您所说的数据库访问技术,所以如果我错过了重点并过于简化了答案,我深表歉意。

【讨论】:

这只是 Tomcat 在数据库中查找密码的术语。【参考方案3】:

JCE 中基于密码的加密根据 PKCS#5 使用盐。有关示例,请参阅http://java.sun.com/j2se/1.4.2/docs/guide/security/jce/JCERefGuide.html#PBEEx。

【讨论】:

以上是关于您将如何在 Tomcat 5.5 中实现加盐密码的主要内容,如果未能解决你的问题,请参考以下文章

什么叫给密码“加盐”?如何安全的为你的用户密码“加盐”?

如何从数据库和身份验证用户中撤回加盐密码?

加盐密码哈希:如何正确使用

如何在 c# 中验证 windows 应用程序的加盐密码和用户名?

用户名、密码、加盐、加密、哈希 - 这一切是如何工作的? [复制]

使用nodeJS的 crypto模块来为你的密码hash加盐