在读的时候从给定的字符中进行独特的组合 https://stackoverflow.com/questions/12275253/making-unique-combinations-from-the-given-characters所以,我想知道这是否是程序使用的技术暴力破解方法适用 ?我的意思是使用 92 种组合来破解用户 ID 或密码。典型的 Windows 键盘有大约 92 个可用于密码的字符。
我不是问如何通过这种方法破解密码,而是想知道一些复杂的程序使用什么方法来破解密码暴力破解方法 ?
使用蛮力解决问题的 Naive 方法确实很简单回溯 http://en.wikipedia.org/wiki/Backtracking,探索所有可能性,评估它们并选择最好的。
但是,对于某些问题 - 您可能会获得比“它解决了它”或“它没有解决它”更多的信息。例如,对于SAT http://en.wikipedia.org/wiki/Boolean_satisfiability_problem问题(查找布尔公式是否有解) - 您可以获得有关“您到底如何得到矛盾”(哪些变量不能满足赋值)的知识。通常我们将此问题称为约束传播。它适用于 SAT 考试DPLL http://en.wikipedia.org/wiki/DPLL_algorithmSAT 求解器经常使用(不同形式)的算法。
如果您有兴趣 - 使用 SAT 求解器的现实生活程序有很多种,软件验证 http://en.wikipedia.org/wiki/Software_verification算法是使用 SAT 求解器的一个示例,以便prove软件(或更常见的硬件)正在正常工作。
另一个常见的优化是分支定界 http://en.wikipedia.org/wiki/Branch_and_bound- 意思是,您可以在到达叶子之前修剪“搜索树”。一个例子是旅行商问题 http://en.wikipedia.org/wiki/Travelling_salesman_problem。如果你已经找到了一条长度为 100 的路径,并且正在探索一条新路径,并达到了 101,则无需继续探索这种可能性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)