c - 多线程密码破解器

标签 c multithreading passwords cracking

我正在试验多线程,密码破解器似乎是最简单(比 opengl 更容易)的密集型任务。

是否值得花时间编写多线程密码破解程序?它会提高超线程双核(4 核)的效率吗?

让 1 个线程生成哈希值而另一个线程比较它或在多个线程之间分配生成会更快吗?

我知道很多问题,如果能回答其中的任何一个都很好,谢谢。

最佳答案

实际上有很多方法可以做到这一点。为简单起见,您应该划分大部分工作。在这种情况下,很明显大部分工作是在计算哈希时完成的。在不明显的情况下,您需要分析您的应用程序并找出大部分时间花在了哪里。但也请记住,许多线程创建/连接会产生开销,因此最好在开始工作之前为每个线程分配一个工作子集(如果有人找到解决方案,可能检查一些 protected 共享变量)。

但是请注意,根据您将尝试破解的哈希类型(我假设您将使用暴力破解),无法保证您的程序一定会完成。大多数(我指的是任何实用/有效的)哈希算法都在计算不可行性的概念下运行。如果您要生成随机字符串来破解,请注意破解者需要做的就是找到碰撞。例如,考虑“cat”和“dog”映射到相同哈希值且真实密码为“dog”的情况。如果破解者找到“猫”作为解决方案,则此解决方案同样可行。然而,这仍然是一个非常困难的问题,也不能保证完成。

另一种选择是字典攻击(因为这是有教育意义的——这应该是可行的)。如果你正在做一个简单的字典攻击,而这个词不在字典中,你就很不走运了。但是,这保证在字典的末尾完成。要实现这一点,最好拆分字典。如果您有 4 个线程和 1000 个单词的字典,那么每个线程应该得到字典的不同子集(每个子集有 250 个条目要处理)。然而,在实践中,大多数 protected 密码可能也有某种形式的盐(只是需要考虑的事情)。

关于c - 多线程密码破解器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11810108/

相关文章:

multithreading - 使用OpenMP使用已知种子生成随机数的安全方法是什么?

asp.net - 在 web.config 中硬编码密码是否安全?

android - Intellij IDEA - 查看保存的密码

C字符串连接

c++ - 如何在 C++ (MSVS) 中获取自纪元以来的本地当前时间(以秒为单位)?

android - 我的应用程序运行时调用了我的应用程序对象的 onCreate,并且我的应用程序重置了。什么会导致这个?

amazon-web-services - 允许用户在阻止访问 IAM 的同时更改自己的密码的 AWS IAM 策略

c - 如何将字符串拆分为字符串数组?

c - LD 正在为 3 行 C 文件生成 2000 行汇编代码。我怎样才能让它只生产所需的组件?

python - Django 对象锁定