【问题标题】:hashing + salt for java web applicationjava web应用程序的哈希+盐
【发布时间】:2018-11-01 01:29:10
【问题描述】:

有人告诉我不要创建自己的盐和散列方法。由于Java中已经存在的那些要优越得多。稍微研究了一下,我不太明白以下内容;

  • 创建哈希和验证哈希有什么区别?
  • 如果盐每次都是随机的,除了用户名之外,你不需要令牌来验证密码吗?

如何以现代方式为 Java Web 应用程序生成和验证散列和加盐密码?

【问题讨论】:

  • 是的,盐与散列密码一起存储。您应该考虑使用 bcrypt、scrypt、PBKDF2 或 Argon2。另见security.stackexchange.com/questions/4781/…
  • “有人告诉我创建自己的盐和散列方法”......作为学术练习,还是用于生产代码?如果是前者就好了。如果是后者,不要编写自己的加密货币

标签: java hash salt


【解决方案1】:

这是使用哈希存储密码的常用方法。

创建哈希和验证哈希有什么区别?

  1. 获取纯文本密码,添加随机盐,然后将盐和散列密码存储在数据库中。
  2. 当用户想要登录时,您获取他们提交的密码,从他们的帐户信息中添加随机盐,对其进行哈希处理,看看它是否等同于存储的哈希密码及其帐户信息。

如果salt每次都是随机的,除了用户名以外,不需要token来验证密码吗?

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

有相同主题的好questions。 有一些很好的工作 examples 与您可以使用的相同。

【讨论】:

  • 但是如果存储的时候salt是随机的,认证的时候不应该是一样的?
  • @JonasGrønbek,在身份验证时,您使用用户配置文件读取存储的盐,所以是的,您可以说,每次您将盐存储在用户配置文件中时,它都是针对特定用户的。虽然每次都正确验证后,如果需要,您可以再次生成盐并重新计算哈希。
猜你喜欢
  • 2011-05-27
  • 2015-07-02
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-16
  • 2012-06-15
  • 1970-01-01
相关资源
最近更新 更多