lec*_*ion 6 hash spring-security bcrypt java-security argon2-ffi
我在一家提供软件服务的初创公司工作,最近我们制定了加密安全标准。对于散列,设定的标准是我们应该使用 SHA-512 或 SHA-256。
对于Java,我们正在考虑使用Spring的Bcrypt或Argon2。实际上阅读他们的文档,如果他们的底层算法使用 SHA-512 或 SHA-256 或其他东西,找不到任何信息?
或者这些都是过时的哈希算法,我们应该使用其他算法吗?
谁可以帮我这个事?
San*_*ros 29
当您提到“加密的安全标准”时,我假设您正在谈论存储密码,因此我将写有关使用“SHA”、“BCRYPT”和“ARGON2I”来保护密码的内容,我会提到缺点以及“SHA”和“BCRYPT/ARGON2I”算法之间的优势。
所有“SHA”算法都不是为哈希密码而设计的,它们是快速算法,易于计算。例如:它们用于加密货币加密,因为它们不加密单个单词或简短的字符组合,它们加密包含货币的大文件,使得很难猜测哈希文件。
另一方面,像“BCRYPT”和“ARGON2I”这样的散列方法是为了存储密码而设计的,与“SHA”的主要区别之一是它们是缓慢的算法,这意味着为了散列一个单词,如果配置正确(由于哈希的成本)。这意味着攻击者必须对尝试比较的单词进行哈希处理所花费的时间与被哈希处理的单词相同(在本示例中,每个哈希时间为 1 秒)。这极大地增加了攻击者为了匹配哈希值而必须投入的时间,从而使您存储的文件更加安全。
如果您想对密码进行哈希处理,建议实施慢速哈希算法,如果您想对长文件进行哈希处理,建议实施快速哈希算法。
回答你的最后一个问题......“BCRYPT”和“ARGON2I”都不是过时的哈希方法。在我看来,BCRYPT 更可靠,因为它上市的时间很长,它于 1999 年发布,并且编程它的开发人员直到今天还在更新它。“ARGON2I”也会发生同样的情况,但它是一种较新的算法(创建于 2015 年),这意味着它没有像“BCRYPT”那样经过测试,但据说“ARGON2I”比“BCRYPT”更安全,但漏洞可能会存在即将被发现。
如果您注意到我说的是“ARGON2I”而不是“ARGON2”,那是因为该算法有多种版本,而“ARGON2I”是专为哈希密码而设计的算法。
这些是来自慢速算法 Wikipedia 和 GitHub 中源代码的链接。
| 归档时间: |
|
| 查看次数: |
15532 次 |
| 最近记录: |