当前位置:  开发笔记 > 编程语言 > 正文

使用Java中的SHA-256算法,Spring安全性,使用相同的盐比较两个散列密码?

如何解决《使用Java中的SHA-256算法,Spring安全性,使用相同的盐比较两个散列密码?》经验,为你挑选了1个好方法。

我需要一些指导,我需要检查来自UI表单(即Authentication对象)的密码,我需要使用SHA-256 + constant salt(在进行比较之前)进行哈希处理,密码来自DB(DB也有密码+盐)使用Spring安全.

我想比较使用相同的SALT值生成的这两个不同的散列值.我们如何在java中做到这一点?有人可以分享一下示例代码吗?



1> jHilscher..:

你可以简单地比较两个密码字符串passwordA.equals(passwordB)......

这有一些安全缺点:

    密码不应该作为字符串处理,而应该作为字符或字节数组处理:请参阅此处的原因

    等效比较(理论上)容易受到时间攻击的影响:请参阅有关java中解决方案的讨论

    使用标准工具来执行与安全相关的事情(即使它们看起来很简单)也许是明智之举.Spring安全有很多工具可以帮到你.以BCryptPasswordEncoder为例.为安全起见,使用经过良好测试和维护的框架始终是个好主意.

     BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
     String hashedPassword = passwordEncoder.encode(password);
     ...
     boolean result = passwordEncoder.matches(rawPassword, hashedPassword);
    


另外:使用适当的密码哈希算法!有关提案,请参阅此答案

SHA-256不是其中之一.Spring Security为您提供了适合工作的工具,因此您可以使用它们.

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有