java - Java Web 应用程序的哈希 + salt

标签 java hash salt

我被告知不要创建自己的盐和哈希方法。由于java中已经存在的那些要优越得多。经过一番研究后,我不太明白以下内容;

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

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

最佳答案

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

What is the difference between creating the hash, and verifying it?

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

If the salt is random every time, don't you need a token to verify passwords other than the username?

如果您看到#2,则 session 可能需要 token ,但身份验证不需要 token (检查用户是否合法。)

有好questions同一主题的。 有好的工作examples与您可以利用的相同内容相关。

关于java - Java Web 应用程序的哈希 + salt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50464969/

相关文章:

java - 我应该使用什么 GUI 组件?

php - 散列 css 和 js 文件以打破缓存。慢吗?

php - 如何生成好的盐——我的函数是否足够安全?

vb.net - 在 vb.net 中制作 PC 特定哈希

java - 每次为相同的字符串值生成相同的盐

salt - 来自 "email+salt "的哈希值作为验证电子邮件的 token

java - 为什么没有 BigDecimal.setPrecision() 方法?

java - 使用 Vaadin 生成缓慢的 HTML

java - VSCode 的 Google Styleguide Java 格式

linux - Perl 脚本异常行为/回收内存