c++ - 在 C++ 中减慢 SHA-256?

标签 c++ hash cryptography sha256 brute-force

我最近一直在学习密码学,以及慢散列如何最好地防止暴力攻击。我尝试在从 this resource 实现的 C++ 中使用 SHA-256 ,这太棒了,但速度非常非常快。我更改了我的一个暴力破解程序来搜索密码的 SHA-256 哈希值,看看是否匹配,结果并没有我希望的那么长。目前使用我自己制作的(相对非常慢的)暴力破解程序,我们得到一个这样的表:

Password | runtime plaintext | passwords/sec plaintext | runtime SHA-256 | passwords/sec SHA-256

   zzz   |    1.18 seconds   |          149,985        |   6.2 seconds   | 28,564

显然,熟练的攻击者会拥有一个以最快速度每秒猜测超过 28,000 个密码的程序。我尝试使用来自 OpenWall 的 Bcrypt ,但我找不到任何关于如何在我的实际程序中使用它的好文档!

是否有任何方法可以减慢我的散列方法,或者我应该使用另一种方法在 C++ 中进行散列?如果是后者,请告诉我您认为哪些资源可以帮助我——我刚刚开始学习密码学,了解不多。谢谢!!!

最佳答案

为了减慢散列速度,多次调用散列算法链接输出。因此,上一次哈希的输出是下一次迭代的输入。这样做 5,000 次(测试它以查看有多慢)以生成较慢的哈希。这依赖于没有已知的方法来缩短递归哈希。使用这种方法,您可以将散列速度降低到您需要的任何程度,比如在您的测试硬件上每秒 1 个散列。

关于c++ - 在 C++ 中减慢 SHA-256?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57018641/

相关文章:

c++ - 通过最大跳跃长度数组的最短路径

Ruby 字符串到哈希值

java - 理解AES加密代码的解释

security - 使用 crypto/* 后安全地将缓冲区清零

ruby - 对哈希 : Ruby 中的值的操作

Python密码学包RSA——将私钥保存到DB

c++ - 如何使用来自 Qt PushButton 的点击信号传递一个值?

c++ - 将 ofstream 传递给线程函数

c++ - 由于 if 语句 c++11 而避免重复代码的不便

testing - 我如何测试我的哈希函数在最大负载方面是否良好?