• 请不要在回答技术问题时复制粘贴 AI 生成的内容
UserName99
V2EX  ›  程序员

自如的密码锁有个问题,只要输入密码包含正确密码就能开锁

  •  
  •   UserName99 · Jul 25, 2024 · 5645 views
    This topic created in 834 days ago, the information mentioned may be changed or developed.
    这个问题存在好几年了,每次误触后还能开门就会纠结这个问题,比如正确密码是 A ,那么输入 A 、123A 、A123 、123A456 这几种都能开锁,这是个 bug 还是 feature 。然后又想到了另一个问题,他们是不是存的明文密码,如果是密文怎么判断输入密码包含正确密码的,就想到一个循环一下,每个字符后推 6 位加密后和存储的密文做对比,可能要循环很多次,还有其他什么好的算法吗?
    32 replies  •  2024-07-26 15:51:15 +08:00
    mns
    mns
    Jul 25, 2024 via Android
    1
    虚位密码。
    MJTest
    MJTest
    Jul 25, 2024❤️9
    2
    是 feature.
    B1ankCat
    B1ankCat
    Jul 25, 2024❤️1
    3
    这是 feature ,就是为了让你可以随便输入,包含正确密码就能进去,防止被别人偷窥到
    FabricPath
    FabricPath
    Jul 25, 2024❤️2
    4
    feature ,当你背后有人站在的时候,你乱打几十个数字也能开门,但是对方不知道你真实密码是什么。
    你这个算法想的有点复杂,单片机大概率不能动态分配内存,不好处理“动态长度”的数据;简单的方式是,你每按一个数字,比如你正确的密码是 234 ,你敲 1 的话,和 4 比较,不正确;
    敲 2 ,和 2 比较,正确;
    敲 3 ,和 3 比较,正确
    敲 5 ,和 4 比较,不正确,清零。

    当中途有匹配的密码之后,开锁 flag 置位,就不会再管后面你敲了什么,按下#的时候判断开锁 flag 。
    FabricPath
    FabricPath
    Jul 25, 2024
    5
    @FabricPath “你敲 1 的话,和 4 比较” -> "你敲 1 的话,和 2 比较"
    yanqiyu
    yanqiyu
    Jul 25, 2024❤️1
    6
    判断密码就状态机(参照 kmp ),什么都不用存,存一个当前识别到几位连续密码就行,数据读一个丢一个

    肯定存的是明文密码,密码锁存个明文密码没有任何困难和安全风险
    EJW
    EJW
    Jul 25, 2024
    7
    feature ,我家新换的德施曼智能门锁也是这样。
    xubeiyou
    xubeiyou
    Jul 25, 2024
    8
    密码锁都这样- -
    MJTest
    MJTest
    Jul 25, 2024
    9
    @EJW 我最近也想换 德施曼感觉用的怎么样啊?尤其是耗电量 谢谢
    SimonOne
    SimonOne
    Jul 25, 2024
    10
    这是 feature 啊,哥们,你不会突然灵光一闪吗
    shadowyue
    shadowyue
    Jul 25, 2024
    11
    虽然知道这个是 feature ,不过我挺好奇为啥这么统一
    EJW
    EJW
    Jul 25, 2024
    12
    @MJTest
    1. 买的 q5s ,密码和指静脉用起来没啥毛病。
    2. 如果门不符合,安装师傅现场施工,服务不错。
    3. 四月初买的,用到现在还有 65%的电。
    4. app 功能不多,但是做的还可以。wx 公众号有开门推送。
    MoYi123
    MoYi123
    Jul 25, 2024
    13
    密码固定 6 位,输一次密码算一次 md5(password[-6:]) 不就行, 这还要什么算法吗?
    sennes
    sennes
    Jul 25, 2024
    14
    那理论上是不是可以用 De Bruijn sequence 破解
    ISOtropy
    ISOtropy
    Jul 25, 2024 via Android❤️2
    15
    我要是能输入一个π岂不是都可以破解
    icanfork
    icanfork
    Jul 25, 2024
    16
    @shadowyue 因为可能这个是密码锁标配的基础能力/基础功能
    deplives
    deplives
    Jul 25, 2024
    17
    老哥,所有的密码锁都支持啊,这个叫虚位密码,假定你不信任当前输入密码的环境,可以在连续正确密码前后增加任意多的字符,保证密码不被泄露
    krixaar
    krixaar
    Jul 25, 2024
    18
    @sennes #14 可以,毕竟单纯按理论的话六位密码直接从 000000 按到 999999 就破解了……
    Inn0Vat10n
    Inn0Vat10n
    Jul 25, 2024
    19
    @krixaar 失败多次就锁死保护了,必须重设密码
    Tsing2
    Tsing2
    Jul 25, 2024
    20
    我猜楼主想问的是,如果使用虚位密码功能,那锁里保存的就不是密码的哈希而是密码的明文了,不然运算量有点大
    ysc3839
    ysc3839
    Jul 25, 2024 via Android
    21
    @FabricPath 但是对方看到完整密码后输入进去也能解锁,感觉意义不大,只有在对方不能完整看到的情况下有点用,或者可能是增加容错率,避免不小心碰到别的数字再输入正确密码失败。
    0d
    0d
    Jul 25, 2024
    22
    @tlsmars009 正常的密码锁,输入一个 pi 也可以打开😺
    utc76
    utc76
    Jul 25, 2024
    23
    @Inn0Vat10n 我把每一种 6 位数字组合全部按一遍,到最后的时候才按 # 开锁,理论来说这样无论如何我都能开锁。
    jim9606
    jim9606
    Jul 25, 2024 via Android❤️1
    24
    防偷窥不合理,因为只要完整重放多头多尾的密码一样可以开锁。
    省内存这个存疑,我不觉得现在有 wifi 功能的 mcu 会负担不起这点代价,可能只是单纯沿用以前弱鸡 mcu 的交互设计。
    交互上,多数密码锁没有清空输入按键也没屏幕提示位数,支持这种输入可以免去对这两者的需求(故意输错虽然可以但会累计错误次数,不能等同于清空输入)
    mcfog
    mcfog
    Jul 25, 2024
    25
    多按几位还有一个好处是避免长期使用以后,密码的那几个按键痕迹/磨损到有肉眼可见的差异
    Ruikoto
    Ruikoto
    Jul 25, 2024
    26
    @jim9606 这个防偷窥是防你输了 6 位被直接记下来的,如果你输入 20 位的虚位密码还被人偷窥走了,那还是用指纹吧
    CSGO
    CSGO
    Jul 25, 2024 via Android
    27
    这个挺好,
    churchmice
    churchmice
    Jul 25, 2024
    28
    你只要密码长度的是固定的,里面存 hash 也是没有问题的
    输入的数据存在一个 buffer 里面,用个滑窗挨个算 hash 就行,计算量也不大
    但是现实的问题是大家都偷懒不会这么做,我见过太多做安全的应用,号称多么安全,最后把钥匙挂门上的设计
    安全这东西最重要的是安全意识,可惜大多数人没有
    反过来你如果有安全意识,你的设计成本会增加,反而会被劣币驱逐,乳汁奈何
    SimonOne
    SimonOne
    Jul 26, 2024
    29
    @jim9606 #24 记住 6 位密码和记住 20 位密码的难度是不一样的,我只要确保胡按的里面夹上正确的就行,偷窥记密码的人可没那么轻松了。
    JustBecause
    JustBecause
    Jul 26, 2024
    30
    @ysc3839 多加几位就好了,我当着面输 20 位密码,看得人也记不住啊,实在不行我输 30 位 40 位
    Ainokiseki
    Ainokiseki
    Jul 26, 2024
    31
    @FabricPath 如果是这样的话,假设正确密码是 2324 ,输入“232324”会无法判断通过的
    grady8866
    grady8866
    Jul 26, 2024
    32
    @meisa 锁体有限制虚位密码长度啊,像米家的就是最长 20 位,不可能没完没了让人输入的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1887 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 80ms · UTC 15:42 · PVG 23:42 · LAX 07:42 · JFK 10:42
    ♥ Do have faith in what you're doing.