我的 Web 应用程序依赖于容器管理的安全性,我想知道是否可以使用加盐密码。据我所知,只需配置 JDBC 或 DataSource Realm 就可以很容易地将摘要密码存储在数据库中,但是无法为这些摘要添加盐。
有什么建议么?
编辑:看来我只需要在提问之前再想一想;-)
只需选择谁在进行摘要计算(客户端或服务器)并相应地配置 Tomcat。
我的 Web 应用程序依赖于容器管理的安全性,我想知道是否可以使用加盐密码。据我所知,只需配置 JDBC 或 DataSource Realm 就可以很容易地将摘要密码存储在数据库中,但是无法为这些摘要添加盐。
有什么建议么?
编辑:看来我只需要在提问之前再想一想;-)
只需选择谁在进行摘要计算(客户端或服务器)并相应地配置 Tomcat。
如果您正在创建和存储摘要,则可以同时创建和存储盐。
您的身份验证表将包含 .... pwdDigest varchar(64), -- 或 int256 如果您有一个 hashSalt int64, ....
然后根据您使用的身份验证协议,您可以在获得用于客户端加密的用户名时将 hashSalt 发送给客户端,或者如果您清楚地收到密码,则使用它对密码进行哈希处理。
我不熟悉您正在谈论的数据库访问技术,因此如果我错过了重点并过于简化了答案,我深表歉意。
Tomcat 5.5 和 6.0 不支持 JDBCRealms 和 DataSourceRealms 中的加盐密码。这是一个已知的错误,建议的补丁似乎可以正常工作,但尚未被接受。
如果您不想应用补丁,您至少可以将其用作实现示例:
JCE 中基于 Passord 的加密根据 PKCS#5 使用盐。有关示例, 请参见http://java.sun.com/j2se/1.4.2/docs/guide/security/jce/JCERefGuide.html#PBEEx 。