Spring security BCrypt与Argon2及其哈希算法

Spring security BCrypt与Argon2及其哈希算法,spring-security,hash,bcrypt,java-security,argon2-ffi,Spring Security,Hash,Bcrypt,Java Security,Argon2 Ffi,我在一家提供软件服务的初创公司工作,最近我们为加密设置了安全标准。对于散列,设置的标准是我们应该使用SHA-512或SHA-256 对于Java,我们正在考虑使用Spring或Argon2的Bcrypt。实际上,在阅读他们的文档时,如果他们的底层算法使用的是SHA-512或SHA-256或其他什么,那么他们找不到任何信息吗 或者这些都是过时的散列算法,我们应该使用其他算法 有人能帮我吗?没有一种“SHA”算法是专为密码散列而设计的,它们是快速算法,易于计算。 例如:它们用于加密货币加密,因为它们

我在一家提供软件服务的初创公司工作,最近我们为加密设置了安全标准。对于散列,设置的标准是我们应该使用SHA-512或SHA-256

对于Java,我们正在考虑使用Spring或Argon2的Bcrypt。实际上,在阅读他们的文档时,如果他们的底层算法使用的是SHA-512或SHA-256或其他什么,那么他们找不到任何信息吗

或者这些都是过时的散列算法,我们应该使用其他算法

有人能帮我吗?

没有一种“SHA”算法是专为密码散列而设计的,它们是快速算法,易于计算。 例如:它们用于加密货币加密,因为它们不加密单个单词或短字符组合,而是加密包含货币的大型文件,因此很难猜测散列文件

另一方面,“BCRYPT”和“ARGON2I”等散列方法用于存储密码,与“SHA”的一个关键区别在于,它们是缓慢的算法,这意味着为了散列一个单词,如果配置正确,可能需要整整一秒钟的时间(因为散列的成本)。 这意味着攻击者在对试图比较的单词进行散列时所花费的时间与散列的单词相同(在本例中,我给每个散列1秒)。这大大增加了攻击者为匹配哈希值所需的时间,从而使存储的文件更加安全

如果要散列密码,建议实现慢速散列算法;如果要散列长文件,建议实现快速散列算法

回答你的最后一个问题。。。“BCRYPT”和“ARGON2I”都不是过时的散列方法。我认为BCRYPT更可靠,因为它上市的时间是1999年发布的,编写它的开发人员一直在更新它,直到现在。“ARGON2I”也会发生同样的情况,但它是一种较新的算法(创建于2015年),这意味着它没有“BCRYPT”那样经过测试,但据说“ARGON2I”比“BCRYPT”更安全,但在不久的将来可能会发现漏洞

如果你注意到我说的是“ARGON2I”而不是“ARGON2”,是因为有各种版本的算法,“ARGON2I”是为哈希密码设计的

这些是来自Wikipedia的慢速算法和GitHub中的源代码的链接


苹果和桔子。Bcrypt和argon2是为一个目的而设计的哈希,而sha-512和sha-256是为不同的目的而设计的。