小编典典

需要帮助建立有效的穷举搜索算法

algorithm

有10个按钮。如果按正确的顺序(依次按5次),这些按钮可以解除锁定。每按一次按钮都会触发解锁检查。

示例:“密码”为123456,然后按下按钮0 1 2 3 4 5 6我从第六次按下按钮时解锁了锁。

我需要设计一种算法,以最有效的方式尝试所有可能的组合(即应按下最少数量的按钮)。

我可以将按钮编号解释为数字,将按按钮的编号依次解释为数字位置,然后尝试尝试所有99999组合来尝试解锁,但是我觉得有一种更有效的算法可以做到这一点。

我可以做些什么来优化此搜索?


阅读 335

收藏
2020-07-28

共1个答案

小编典典

要优化对锁的暴力攻击,可以使用De Bruijn序列

该序列可用于缩短对类似PIN的密码锁的暴力攻击,该密码锁没有“
enter”键并接受输入的最后n个数字。例如,具有4位数字代码的数字门锁将具有长度为10,000的B(10,4)解决方案。因此,最多只需要按下10,000
+ 3 = 10,003(因为解决方案是循环的)即可打开锁。单独尝试所有代码将需要按4×10,000 = 40,000次印刷。

2020-07-28