在我的数据库中,我有一个用户密码字段(User.UserPassword),我使用SHA1算法来散列用户输入,然后我用盐哈希。好的,没关系。
但现在我也在验证CIFS用户。一个CIFS协议是NTLMv1,它为我的Samba Java服务器使用16位(非常不安全)的MD4。
我无法将MD4转换为SHA1或比较这些哈希结果。所以,我需要保存两个哈希值或比较它们。所以,我可以:
将MD4哈希保存到User.UserPasswordMD4。
将MD4哈希保存到其他表中,例如ExternalAuthenticators
保存用户全文密码并将其转换(Blargh)
Spring Security(我不知道该怎么做)
您的选择就在这里......
任何人都可以帮助我吗?
答案 0 :(得分:1)
看起来你应该存储RC4哈希值,因为客户端和服务器应该对质询字节执行相同的操作,而服务器应该比较结果。
您可以将重要或所有数据库数据存储在加密分区上,但会降低性能。
我可以建议将RC4密码存储到SHA-1字段中,但是已加密。 3DES就足够了,也许有些盐。你已经在SHA-1哈希的某个地方加盐了。 当你需要RC4哈希,来自DB的简单解密值,减去(或XOR)盐并执行通常的身份验证过程。
不要使用NTLM v1,这是旧的,不安全。