当前位置: 首页 > 知识库问答 >
问题:

使用Spring安全处理盐 密码编码器

傅振濂
2023-03-14

我惊讶地看到Spring Security PasswordEncoder(如果有区别的话,我使用的实现是BCryptPasswordEncoder)在对密码进行编码时会生成盐。

我没有得到的是,在验证登录请求时,我应该如何获得这个salt?我本打算使用我自己的盐,但(大概)由于自动生成盐,我得到了相同密码盐组合的不同哈希值。

我有点困惑,不知道编码器应该如何正确使用。

共有1个答案

苍烨然
2023-03-14

您应该使用内置验证逻辑,而不是编写自己的密码验证函数。因此,您不需要获取Spring Security生成的盐。请参阅PasswordEncoder中的留档:

/**
 * Verify the encoded password obtained from storage matches the submitted raw
 * password after it too is encoded. Returns true if the passwords match, false if
 * they do not. The stored password itself is never decoded.
 *
 * @param rawPassword the raw password to encode and match
 * @param encodedPassword the encoded password from storage to compare with
 * @return true if the raw password, after encoding, matches the encoded password from
 * storage
 */
boolean matches(CharSequence rawPassword, String encodedPassword);
 类似资料:
  • 我无法使用正确的详细信息登录,因为程序不断声明编码的密码看起来不像bcrypt。有人知道怎么解决这个吗?我正在使用JDBC身份验证。 我也有正确的数据库表,有足够的空间用于编码密码。我不确定哪里出了问题。 JSP表单: 安全配置: 登录控制器 我的数据库:这里

  • Java为URL编码字符串提供了类。但是将密码存储为字符串被认为是不安全的。通过输出流通过POST发送密码的代码是否足够安全? 一方面,它在使用字符串。另一方面,这些字符串只有1个字符长,编码后在概念上是相同的。而且,在我看来,这可能会在多字节字符上失败。攻击者是否能够在内存中找到这些1-char字符串并重建原始密码?有没有更好的办法做到这一点?

  • 大部分开发者知道密码不能以明文形式存储,但是许多开发者仍认为使用 md5 或者 sha1 来哈希化密码是安全的。 一度,使用上述的哈希算法是足够安全的,但是, 现代硬件的发展使得短时间内暴力破解上述算法生成的哈希串成为可能。 为了即使在最糟糕的情况下(你的应用程序被破解了)也能给用户密码提供增强的安全性, 你需要使用一个能够对抗暴力破解攻击的哈希算法。目前最好的选择是 bcrypt。在 PHP 中

  • 我最近遵循了Spring boot安全中的身份验证和授权教程,我想我在谈到sql时迷路了。尽管它没有显示任何错误,即使我输入了正确的用户名和密码,它仍然显示错误的凭据。这是我的代码: UserDetailsServiceImpl.java WebUserMapper.java WebSecurityConfig.java 这是我的数据库: 它返回以下错误: 密码是123。我不知道为什么它不工作,即

  • 我正在尝试使用新的基于组件的(没有WebSecurityConfigurerAdapter)配置,并按如下方式设置我的安全配置: 安全配置.java文件 但是当我运行应用程序并尝试记录用户时,即使我在安全配置中将BCryptPassword编码器作为bean,也会出现以下错误: 错误堆栈跟踪* 在新组件配置中设置PasswordEncoder的正确方法是什么? 编辑:添加登录逻辑 AppUserS

  • 我应该如何用Spring Data REST自动编码我的实体的Subbmissibed纯密码字段? 在setter方法上使用@projection和SpEL是可能的吗?

  • 问题内容: 因此,我在SO上发现应该将密码和“ salt”一起散列。(可在此处和此处找到文章。) 这是代码: 现在,我需要同时将和和保存在MySQL中,如下所示: ** 当然会被散列,而不是以纯文本形式存储。 我只是想知道以这种方式进行操作实际上是否有意义,因为通过这种方式,黑客或其他任何人也都可以理解吗?因此,如果他们破解了密码并且看到了密码,他们会自动知道密码是?还是因为他不知道密码(因为密码

  • 问题内容: 我正在建立一个网站,并试图决定如何加密用户密码以将其存储在SQL数据库中。 我意识到使用简单的md5(password)是非常不安全的。我正在考虑使用sha512(password.salt),并且我一直在研究生成有用盐的最佳方法。我阅读了许多文章,指出盐应尽可能地随机以增加哈希值的熵,这似乎是个好主意。但: 您需要将随机盐与哈希一起存储 鉴于攻击者以某种方式可以访问您的哈希密码(并试