这个问题存在好几年了,每次误触后还能开门就会纠结这个问题,比如正确密码是 A ,那么输入 A 、123A 、A123 、123A456 这几种都能开锁,这是个 bug 还是 feature 。然后又想到了另一个问题,他们是不是存的明文密码,如果是密文怎么判断输入密码包含正确密码的,就想到一个循环一下,每个字符后推 6 位加密后和存储的密文做对比,可能要循环很多次,还有其他什么好的算法吗?
feature ,当你背后有人站在的时候,你乱打几十个数字也能开门,但是对方不知道你真实密码是什么。 你这个算法想的有点复杂,单片机大概率不能动态分配内存,不好处理“动态长度”的数据;简单的方式是,你每按一个数字,比如你正确的密码是 234 ,你敲 1 的话,和 4 比较,不正确; 敲 2 ,和 2 比较,正确; 敲 3 ,和 3 比较,正确 敲 5 ,和 4 比较,不正确,清零。 当中途有匹配的密码之后,开锁 flag 置位,就不会再管后面你敲了什么,按下#的时候判断开锁 flag 。