Java 以哈希格式存储密码

Java 以哈希格式存储密码,java,hash,passwords,storage,hmac,Java,Hash,Passwords,Storage,Hmac,在我的应用程序中,用户创建数据,然后使用他们的密钥计算散列。带有附加哈希的数据被发送到服务器 服务器使用为用户列出的私钥重新计算哈希 现在,在服务器端,我显然不能以明文形式存储密钥。但是,我也不能使用Hmac进行单向存储,因为这样,当我重新计算数据的散列时,它将给出不同的响应 在服务器端存储用户密码的最佳方式是什么?最好的方式是您现在所做的。我的意思是,密码永远不会以明文或加密的可逆形式存储。我并不完全理解您的问题,但如果您想使系统真正安全,请为您的问题找到解决方案,而无需使用简单形式的用户密码

在我的应用程序中,用户创建数据,然后使用他们的密钥计算散列。带有附加哈希的数据被发送到服务器

服务器使用为用户列出的私钥重新计算哈希

现在,在服务器端,我显然不能以明文形式存储密钥。但是,我也不能使用Hmac进行单向存储,因为这样,当我重新计算数据的散列时,它将给出不同的响应


在服务器端存储用户密码的最佳方式是什么?

最好的方式是您现在所做的。我的意思是,密码永远不会以明文或加密的可逆形式存储。我并不完全理解您的问题,但如果您想使系统真正安全,请为您的问题找到解决方案,而无需使用简单形式的用户密码


但如果您确实需要这个,我建议您至少将密码存储在DB encrypted中。加密密码也应该以某种方式隐藏起来,以使潜在黑客的工作更加困难。但请注意:一旦你这样做了,系统就会变得脆弱,这一切只取决于黑客的专业技能和动机

密码以明文形式存储在服务器端——一旦请求到达服务器,我将使用用户的明文密码作为“密钥”,重新计算哈希值。(只是为了确保用户的计算哈希与服务器针对特定请求的计算哈希相匹配)。我在概念上有没有遗漏什么?