首页 理论教育 数字密码锁的软件设计优化方案

数字密码锁的软件设计优化方案

时间:2023-06-15 理论教育 版权反馈
【摘要】:显然要使密码锁保密安全性高,NT应尽可能大,使P趋于0。若每一次开锁操作时间为t,则下限NTL的选择应使密码落在随机开锁可能成功的操作时区以外。另外,相同制式下不同的基底对编码总量NT会有影响,而且基底的选择也会影响到硬件电路的设计。

数字密码锁的软件设计优化方案

对于数字锁控制电路,首先,要求是安全可靠,即锁的密码破译可能性尽可能小;其次,要加强系统的可靠性

1.编码总量的确定

电子密码锁随机开锁成功的概率定义为978-7-111-42984-5-Chapter05-37.jpg,其中P为随机开锁成功概率,NT为密码编码总量。显然要使密码锁保密安全性高,NT应尽可能大,使P趋于0。但NT越大,相应的电路就越复杂,密码的记忆与操作也越麻烦,故NT应有合理的上限和下限。若每一次开锁操作时间为t,则下限NTL的选择应使密码落在随机开锁可能成功的操作时区以外。为便于进行随机试验,将NT分为n段并期望在978-7-111-42984-5-Chapter05-38.jpg段的1/2处开锁成功。此时978-7-111-42984-5-Chapter05-39.jpg,则随机开锁试验期望成功的时间为

978-7-111-42984-5-Chapter05-40.jpg

假设系统设计不考虑误码输入的保护,密码锁在无保护的情况下使操作人员任意作随机开锁试验的时间为TEN,则

NTL=(2n×TEN/tx (5-3)

式中,x为最低安全系数,式(5-3)可改写成

978-7-111-42984-5-Chapter05-41.jpg

显然,若使NTNTL,则TxTEN,分段随机试验不易成功。一般来说,当NT选定之后,NT的上限NTH原则上是越大越安全,但一般设计时取NTH=(10~1000)NTL较为合理。

2.编码制式的选择

编码制式应根据NT的大小选取,可分为如下三种:

(1)密码的各位都可以重码:NT1=ai

(2)密码的非相邻位可以重码:NT2=aa-1)i

(3)密码的任何一位都不能重码:NT3=aa-1)…(a-i+1)。式中,a为基数;i为位数;ai的选取应该满足NTNTLa=2,3,4,10,12,14,16。

以最常用的a=10,i=6为例,可以计算出NT2=0.53NT1NT3=0.15NT1。所以,编码制式如何选择,是否考虑重码,对NT有很大影响。另外,相同制式下不同的基底对编码总量NT会有影响,而且基底的选择也会影响到硬件电路的设计。

3.功能描述

(1)密码锁采用串行累加计数的方式输入十进制数字口令,可设置任意4位密码。

(2)输入的口令及口令的位数均正确即可开锁。

(3)允许密码输入错误的最大次数为三次,口令错误次数超过三次则进入死锁状态,并发出警报。

(4)开锁后可以重新上锁,再次上锁后只有再次输入正确的密码才能开锁。

(5)密码锁有计时系统设计,在开锁状态及报警状态一段时间后,能自动进入初始状态,开锁时间及报警时间可以任意设置。

(6)有cancel功能,输入错误密码时可以清除密码重新输入。

4.数字密码锁系统主控制流程设计

系统控制流程如图5-33所示。

5.主机状态机部分的设计

此模块的主要功能是实现各种工作状态之间的转换。密码锁的工作状态有三种,分别为输入密码时密码锁的等待状态(waits)、输入密码正确时密码锁的开锁状态(pass)、以及输入密码错误时密码锁的报警状态(alarm)。为实现三种状态之间的相互转换,首先要明确三种状态相互转换所需要的条件。

(1)设计思想 设计密码锁的初始状态为等待状态,密码锁在没有达到报警或开锁的条件时,密码锁将持续保持这个状态不变。在此状态下,当收到密码正确的信号时(correct=1),则开始变为开锁状态;当收到密码错误信号(error=1)且输入密码错误次数为三次时,则开始变为报警状态,否则就保持等待状态不变。当密码锁变为开锁状态后,系统开始检测,当开锁时间到达设计的时间后,密码锁自动转变回等待状态,报警状态的转换方式和开锁状态一样,密码锁的工作状态将保持这种转换方式持续工作,其状态转换图如图5-34所示。

978-7-111-42984-5-Chapter05-42.jpg

图5-33 系统控制流程图

978-7-111-42984-5-Chapter05-43.jpg

图5-34 主有效状态机的状态转换图

(2)主机状态机部分的代码设计 设计代码详见光盘附件5-3。

设置的激励波形如图5-35所示。

通过仿真得到的结果如图5-36所示。

由图5-36所示的仿真结果可知,此模块可以实现在设计条件下的模块之间的转换。当主状态为waits时,如果收到正确信号,则输出开锁命令,如果收到错误信号,且错误次数为三次,即输出报警命令,除此之外则保持waits状态不变;当主状态为开锁状态pass时,计时器达到设定时间后,停止开锁,自动进入锁定状态,否则就保持开锁状态;当主状态为报警时,与开锁状态类似。

978-7-111-42984-5-Chapter05-44.jpg

图5-35 激励波形图

978-7-111-42984-5-Chapter05-45.jpg

图5-36 仿真结果图

6.输出控制模块(www.xing528.com)

此模块的作用是控制各种状态下的输出信号。在初始状态下,系统的报警输出和开锁输出都为0,即没有信号输出;当密码锁为开锁状态时,只输出开锁命令(passed=1);当密码锁进入报警状态时,则只输出报警命令(alarmed=1);其他状态时,输出都保持输出状态不变。

根据此模块的功能设计的代码详见光盘附件5-4。

设置的激励波形如图5-37所示。

978-7-111-42984-5-Chapter05-46.jpg

图5-37 激励波形图

通过仿真得到的结果如图5-38所示。

由图5-38可以看出,复位时,报警信号和解锁信号都为0,当主状态为开锁时,仅输出开锁信号;当主状态为报警时,则只输出报警信号;其他时间,系统默认为无输出。

978-7-111-42984-5-Chapter05-47.jpg

图5-38 仿真结果

7.报警及开锁定时器模块

本模块主要用于报警及开锁的定时。当输入密码错误次数为三次时开始报警,但密码锁不能一直的报警,需要对密码锁报警的时间加以限制。采用一个计时器(实际上是一个计数器),对时钟信号计数后再乘以时钟信号的周期则为密码锁的报警时间,如果要修改报警时间则只需修改对时钟信号计数的判定条件即可。同样,密码锁开锁后也不能一直保持开锁状态,否则就失去了密码锁的意义,这时需要进行计时判定。当到达规定时间后,密码锁自动回到初始状态。

根据此模块的功能设计的代码详见光盘附件5-5。

设置的激励波形如图5-39所示。

978-7-111-42984-5-Chapter05-48.jpg

图5-39 激励波形图

仿真结果如图5-40所示。

978-7-111-42984-5-Chapter05-49.jpg

图5-40 仿真结果

由图5-40所示的结果可以看出,在报警状态下,系统开始计时。当报警停止时计时也停止,并且清零。

8.密码记录模块

此模块的功能为记录并存储输入的密码,用于与原始密码的对比。首先是编码的考虑,密码锁的输入有0~9、enter、cancel共11个按键,因此至少需要4位二进制数进行编码。这里采用常见的8421BCD码,再加1位按键数输入判定位来表示一个输入。当按键输入判定位为1时则表示有按键输入,则把4位BCD码放入16位密码寄存器中;当按键输入判定位为0时,则不论此时BCD码为多少都不存入密码寄存器,密码锁会依次记录四次按键输入的值存入密码寄存器中。

本模块的功能实现代码详见光盘附件5-6。

设置的激励波形如图5-41所示。

978-7-111-42984-5-Chapter05-50.jpg

图5-41 激励波形图

仿真结果如图5-42所示。

978-7-111-42984-5-Chapter05-51.jpg

图5-42 仿真结果

由图5-42可以看出,本模块的功能实现正确,用户输入的4位密码被依次记录在pass-word里,在复位之前会一直保存数据,复位后清零。

9.比较密码模块

本模块的功能为将密码寄存器中的值和原始密码进行比较,然后产生正确或错误信息。当按键输入为enter时,系统开始比较寄存器记录的密码和原始密码,相等时输出一个正确信号;当主模块收到此信号时执行开锁命令、密码不一致时,系统输出一个错误信号,此信号会被错误次数计数器所记录;当记录次数为为3时,主模块将执行报警命令。

比较密码模块的设计代码详见光盘附件5-7。

设置的激励波形如图5-43所示。

仿真结果如图5-44所示。

由图5-44可以看出,本模块功能正确,当输入正确密码时产生正确信号,输入密码错误时产生错误信号。

978-7-111-42984-5-Chapter05-52.jpg

图5-43 激励波形图

978-7-111-42984-5-Chapter05-53.jpg

图5-44 仿真结果

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈