BCrypt与Argon2及其哈希算法



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

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

还是这两种哈希算法都过时了,我们应该使用其他算法?

有人能帮我吗?

当您指的是"加密的安全标准";我假设你在谈论存储密码,所以我会写关于使用";SHA"BCRYPT";以及";ARGON2I";为了确保密码的安全;SHA";以及";BCRYPT/ARGON2I";算法。

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

另一方面,散列方法;BCRYPT";以及";ARGON2I";用于存储密码;SHA";它们是缓慢的算法,这意味着如果配置正确(由于哈希的成本(,为了对一个单词进行哈希,可能需要整整一秒钟的时间。这意味着攻击者在散列试图比较的单词时所花费的时间与散列的单词相同(在本例中,我为每个散列提供1秒(。这大大增加了攻击者为匹配哈希而必须投入的时间,使您存储的文件更加安全。

如果你想对密码进行散列,建议使用慢速散列算法,如果你想散列长文件,建议使用快速散列算法。

回答你的最后一个问题。。。两者都不是";BCRYPT";也不是";ARGON2I";是过时的哈希方法。BCRYPT在我看来更可靠,因为它在市场上的时间,它于1999年发布,编程人员一直在更新它,直到今天。同样的情况也发生在";ARGON2I";但这是一种较新的算法(创建于2015年(,这意味着它不像"算法"那样经过测试;BCRYPT";,然而据说";ARGON2I";比";BCRYPT";但可能会发现即将出现的漏洞。

如果你注意到我说的是";ARGON2I";而不是";ARGON2";是因为存在各种版本的算法;ARGON2I";是为散列密码而设计的。

这些链接来自慢算法维基百科和GitHub中的源代码。

bcrypt 的维基百科

argon2 的维基百科

bcrypt 的GitHub

argon2 的GitHub

最新更新