摘 要:随着快递运输的发展,快递安全问题日益受到人们的重视。在一般单片机密码电子锁的基础上,改进密码验证程序,实现了密码动态更新的电子锁,以满足快递业的需要。
关键词:单片机;动态密码;电子密码锁
随着电子商务的发展,特别是奢侈品网上交易的发展,快递运输的安全日益引起人们的关注。常见的电子密码锁,一般只有固定的密码,容易遭到暴力破解,不能满足快递运输的需要。本文拟设计一种每次开锁需输入不同密码的电子密码锁,以防止密码被暴力破解,并可以根据开锁代码判断快递运输状态。
1 设计要求
(1)共5位密码,每位密码的取值范围为0~9。
(2)系统根据开锁次数、电子锁序号、开机随机数动态生成密码。
(3)5位密码输入不完全正确时,报警30 s,重新生成开机随机数并显示,生成新的密码,用户需要新的密码才能打开密码锁。
(4)键入的5位密码完全正确时,LED闪烁10 s,电子锁开锁。
(5)电子锁上锁后,显示上锁随机数,用户正确输入密码前,用户不能重新生成随机数。
(6)由于电子锁运行过程中,需要轮换显示上锁随机数、开锁随机数以及用户输入的密码,因此,电子锁需要有一位数码管显示相应的功能符。
(7)成本要比较低,硬件和软件要尽可能简洁可靠,便于批量生产[1]。
2 设计思路及软硬件实现
根据总体设计要求分析,该电子锁电路需要的I/O口线少于15个。若设计得当,程序不超过8 KB,所需的RAM少于256×8 bit。所以可选择质优价廉的AT89C52,而且不需要外接程序存储器和数据存储器及其他扩展部件。外围电路主要由LED、键盘输入显示电路、继电器驱动电路、扬声器等组成。其硬件框图如图1所示。
电子锁上锁后,数码管显示5位上锁代码,此代码由2位开锁次数和3位随机数随机组成。每次上锁,由于开锁次数和生成的随机数不同,所以每次上锁的上锁代码也不同。上锁后,上锁代码存入E2PROM,正确开锁前,不允许重复获取上锁代码。第一次按开锁键,数码管显示5位开锁代码,此代码由前两位的开锁次数代码和后三位的随机数组成。如果开锁代码显示的次数代码与上锁代码显示的上锁次数代码不同,客户可以拒收或联系卖家。第二次按开锁键,进入密码输入程序,客户可以按移位键和数字增加键输入计算所得的密码。全部密码输入完毕后,用户第三次按下开锁键,系统验证输入密码是否正确,如正确,开锁,绿色LED闪烁10 s;若密码错误,蜂鸣器报警30 s后,重新显示新的开锁代码,需要输入最新生成的密码。用户需要密码超时,重新显示开锁代码,用户需要输入新的密码。整个系统程序框图如图2所示。
4 密码验证程序
电子锁系统运行过程中,每次用户输入密码后,系统首先根据上锁随机数、开锁随机数、开锁次数、电子锁序列号生成密码,然后与用户输入的密码匹配。密码输入正确,开锁,发光管闪烁,并初始化参数,运行电子锁再次上锁。若密码输入错误,报警30 s,在报警的过程中,不接收任何按键输入,而是产生新的开锁随机数并显示,用户需要输入最新产生的密码才能开锁。其程序流程图如图4所示。
5 管理系统程序
管理系统主要由数据库、商家发货管理程序、买家收货系统组成。数据库主要用来存储上锁代码、序列号、商家信息、电子锁编码信息和买家信息,商家发货后,登录管理系统,输入发货商品所用电子锁编码信息和上锁代码以及买家ID。对应买家登录后,系统提示买家收货以及商品所用电子锁的开锁代码首两位数字。收到货物后,买家检查开锁代码是否符合系统提示,若正确,登录管理系统,输入开锁代码,获取密码开锁;若错误,直接拒收,或联系卖家处理。
动态密码电子锁可以根据开锁次数、电子锁序列号动态生成密码,每次开锁需要输入不同的密码才能开锁,不能暴力破解开锁密码,满足了快递运输安全性的要求。同时硬件简洁可靠,符合系统设计要求。
参考文献
[1] 董继成.一种新型安全的单片机密码锁[J].电子技术,2004(3):58-60.