(原) 智能门锁临时密码的实现

原创文章,请后转载,并注明出处。

最近买了一套小米智能门锁,它是通过蓝牙进行近场通信控制,我比较希望它是通过网络的。

当蓝牙连接不到门锁时,大部份功能是没有的,只能进行临时密码添加。既然不能网络,又没有蓝牙连接,它是如何设置临时密码的呢?

我想是通过算法,例如:当能连接时,同步手机的时间(网络时间),确保时间的正确性。然后根据算法,根据当前时间和过期时间,计算出一个临时密码。这个密码是某一时刻生成的,当输入这个临时密码后,由门锁系统自动计算正确性。也就是说其实有无数个密码是可以通过验证的,比如在1分钟内为1个有效单位,则在某个1小时中,有60个密码是有效的,基于每输入5次就锁定一定时间的机制,猜密者能真正猜中密码的机会有限。为了控制密码的个数,小米锁控制临时密码有效时间为30分钟内。

周期性密码、指纹密码、用户密码等,都是需要蓝牙连接,发送到系统中的,仅有临时密码是通过算法验证通过。