散列+;salt for java web应用程序

散列+;salt for java web应用程序,java,hash,salt,Java,Hash,Salt,我被告知不要创建自己的salt和hash方法。因为java中已经存在的那些是非常优秀的。在仔细研究之后,我不太理解以下内容: 创建散列和验证散列之间有什么区别 如果salt每次都是随机的,那么除了用户名之外,您不需要一个令牌来验证密码吗 如何以现代方式为JavaWeb应用程序生成和验证哈希密码和盐密码 这里是使用散列存储密码的常用方法 创建散列和验证散列之间有什么区别 获取纯文本密码,添加一个随机salt,然后将salt和哈希密码存储在数据库中 当用户想要登录时,您可以获取他们提交的密码,从

我被告知不要创建自己的salt和hash方法。因为java中已经存在的那些是非常优秀的。在仔细研究之后,我不太理解以下内容:

  • 创建散列和验证散列之间有什么区别
  • 如果salt每次都是随机的,那么除了用户名之外,您不需要一个令牌来验证密码吗

如何以现代方式为JavaWeb应用程序生成和验证哈希密码和盐密码

这里是使用散列存储密码的常用方法

创建散列和验证散列之间有什么区别

  • 获取纯文本密码,添加一个随机salt,然后将salt和哈希密码存储在数据库中
  • 当用户想要登录时,您可以获取他们提交的密码,从他们的帐户信息中添加随机密码,对其进行散列,然后查看它是否与存储的散列密码及其帐户信息相等
  • 如果salt每次都是随机的,那么除了用户名之外,您不需要令牌来验证密码吗

    如果您看到#2,可能需要令牌用于会话目的,但不用于身份验证(检查用户是否合法)

    同样的主题也有好处。
    您可以利用与此相关的良好工作。

    是的,salt与哈希密码一起存储。您应该研究如何使用bcrypt、scrypt、PBKDF2或Argon2。另请参见“我被告知创建自己的salt和hash方法”。。。作为学术练习,还是生产代码?如果是前者,好吧。如果是后者,请不要编写自己的密码。但是如果存储时salt是随机的,而在验证时它们不应该相同?@JonasGrønbek,在验证时,您使用用户配置文件读取存储的salt,因此是的,您可以说,salt每次都是针对特定用户的,因为您正在将其存储在用户配置文件中。尽管每次正确验证后,您可以再次生成salt并在需要时重新计算哈希。