2

在我的数据库中,我有一个用户密码字段(User.UserPassword),我使用 SHA1 算法对用户输入进行哈希处理,然后用盐对其进行哈希处理。好没问题。

但现在我也在验证 CIFS 用户。CIFS 的一种协议是 NTLMv1,它对我的​​ Samba Java 服务器使用 MD4 16 位(非常不安全)。

我无法将 MD4 转换为 SHA1 或比较这些哈希结果。所以,我需要保存两个哈希或比较它们。所以,我可以:

  • 将 MD4 哈希保存到 User.UserPasswordMD4 中。

  • 将 MD4 哈希保存到其他表中,例如 ExternalAuthenticators

  • 保存用户全文密码并转换(Blargh)

  • Spring Security(我还不知道怎么做)

  • 你的选择在这里...

谁能帮我?

4

1 回答 1

1

看起来您应该将 RC4 哈希存储在某个地方,因为客户端和服务器都应该对挑战字节执行相同的操作,而服务器应该比较结果。

  • 保存纯文本密码 - 坏主意,忘了它。
  • 如果您将其保存为数据库中的 PasswordMD4 - 它不会比 PC4 本身增加安全性。
  • 保存在其他表中 - 与以前的变体没有什么不同。
  • Spring security - 不知道如何在这里应用。

您可以将重要或所有数据库数据存储在加密分区上,但这会稍微降低性能。

我可以建议将 RC4 密码存储到 SHA-1 字段中,但要加密。3DES就足够了,也许加点盐。您应该已经在某个地方为您的 SHA-1 哈希添加了盐。当您需要 RC4 哈希时,从 DB 中简单解密值,减去(或 XOR)盐并执行通常的身份验证程序。

并且不要使用 NTLM v1,它既旧又不安全。

于 2013-06-13T15:22:45.400 回答