随着社会经济的快速增长,安全防盗已成为一个社会问题。特别是对于各金融机构以及许多企事业单位,为了资金周转方便,一般设有金库。然而近年来发生许多重大盗库案,如河北邯郸农行金库5 100万元被盗案,金库的安全管理已成为一个不可忽视的问题。本论文就加强金库的安全管理,针对目前金库的管理缺陷,设计了一种金库门电子密码锁系统。这种密码锁不需要更改密码却每次开锁密码都不一样。保密性很高,既需要输入一组随机序号,同时还需要输入一个经过密码生成器计算得出的可变密码。本设计在安全系数要求很高,且需要多人管理与参与才能开锁的场合下非常适用。每次开锁密码不同,解决了传统键盘式电子密码锁容易被他人在键盘上试探出来,或被旁观者窥测出来,保密性不足的缺点。
1 设计思路
整个设计由金库门密码锁控制器和密码生成器两大部分组成。两部分均有液晶显示模块和键盘模块,作为人机对话的界面和工具。不同的是密码锁控制器还包含密码识别模块和开锁控制模块,用户从键盘上输入密码信息,通过内置信息的计算、对比和判断,产生对开锁控制模块与报警系统的控制。而密码生成器主要包含密码生成模块,根据用户输入的信息,通过一定的算法计算出密码,并将密码通过液晶显示反馈给用户。
密码生成器由一名机构负责人掌管。当用户需要开启金库门时,金库门密码镇控制器先为用户产生六位随机码,用户获取了随机码之后需要向机构负责人索取密码。机构负责人在密码产生器上按照提示输入2位随机序号和用户所告知的6位随机码,密码产生器计算出6位密码,负责人员告知用户2位随机序号和6位密码,用户输入2位序号和6位密码后,金库门密码锁经同样算法计算,如果密码匹对正确,则开锁,否则不开。密码输入错误次数超3次则蜂鸣器鸣叫并启动报警系统,只有输入正确的系统内置口令才能使蜂鸣器停止鸣叫以及关闭报警系统。
金库门密码锁控制器和密码生成器具有同样的内置口令,该内置口令可重新设置,当重新设置时需要验证原口令,如果相同则可进行更改,并将新口令保存在单片机的EEP-ROM中。关机后,保存的口令不丢失。重新设置内置口令后,同样的随机码、随机序号,开锁密码是不一样的。
2 STC12系列单片机以及OCM12864的简介
STC12系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,与普通单片机相比,具有高速/低功耗/超强抗干扰/无法解密等优点,是新一代8051单片机,且指令代码完全兼容传统8051,速度却快8~12倍。工作电压为3.8 V~2.2 V(3 V单片机)/5.5 V~3.3 V(5 V单片机),有6个16位定时器,兼容普通8051的定时器或4个外部中断,具有看门狗和EEPROM功能,并且内部集成MAX810专用复位电路。基于上述优势,本设计采用STC12系列单片机。
液晶显示部分采用OCM12864图形点阵液晶显示模块,该图形点阵液晶显示模块有128×64点阵,可显示各种字符及图形,可与CPU直接接口,具有8位标准数据总线、6条控制线及电源线。OCM12864具有自己的指令集,结合OCM12864的接口时序,可以实现对液晶模块的读写操作。图1、图2分别为OCM12864的读操作和写操作时序,比较读写操作时序,可以发现读写操作时序的不同之处在于片选信号R/W在E有效时的取值。当E为高电平,R/W为高电平时则是单片机执行的是读操作;当E为高电平,R/W为低电平时则是单片机执行的是写操作。本设计采用OCM12864中的OCM12864-5(3 V)和OCM12864-2(5 V),根据金鹏电子有限公司提供的读写操作时序编程可以实现对液晶模块的读写。
3 硬件设计
系统硬件设计由两大部分组成:密码生成器硬件设计和密码锁控制器硬件设计。
3.1 密码生成器硬件设计
以STC12系列单片机STC12LE5410AD(3 V单片机)为核心,结构框图如图3所示。其功能模块主要由电源电路模块、键盘电路、液晶显示模块和指示控制模块四部分组成的。
电源模块设计采用双电源切换供电,即既可以通过USB接口供电,也可以通过电池为系统供电。经USB或电池引出来的电压是5 V,再经1117-33稳压管稳压之后为CPU提供3.3V电压。STC12LE5410AD的P1口与键盘电路相连接,P3.6接LED灯作为系统的指示灯。P3.0与OCM12864的数据/指令引脚RS相连,实现数据/指令选择,当RW=1时,数据DB0-DB7将送入显示RAM;当RW=0时,数据DB0-DB7将送入指令寄存器执行。数据的读写选择R/W由P3.4来控制。E为0CM12864的液晶屏的读写使能端,并通过STC12LE5410AD的P3.2和P3.3选择OCM12864左半屏和右半屏。除此之外,V0是LCD的调整电压,必须与VEE一起与10 k电位器相连,可对液晶屏的对比度进行调整。
3.2 金库门密码锁控制器硬件设计
以STC12系列的STC12C5410AD(5V单片机)为核心,主要包括电源电路模块、液晶显示驱动模块、键盘电路模块、报警输出模块以及和STC12C2052AD通信的串口通信模块、开锁控制电路。
在该系统中,电源电路模块主要是由一个12 V变压器与一个LM7805稳压器电路所组成的,为CPU提供电压。由于STC12C5410AD是5 V的单片机,所以液晶显示模块同样采用5 V的OCM12864-2液晶模块。8位标准数据总线与单片机STC12C5410AD的P2口相连接;读写选择管脚R/W与P3.3相连;读写使能管脚CS1、CS2分别与P3.7、P3.5相连接;RS与P3.4相连,控制数据/指令的选择。系统包含报警输出电路,当连续输入3次错误密码时,则蜂鸣器报警以示警告并启动报警系统,则再不能做任何的操作,直到输入正确的内置口令才能关闭报警系统。本系统中,还采用输入和显示部分与开锁控制电路相分开,PCB制作时制作成两块板,用串口通信实现两块板之间的通信,使密码比对后的结果能输送到STC12C2052AD,实现对机械锁的控制。
4 软件设计
4.1 密码算法的实现
密码算法是本设计中的一个最重要的部分,当用户使用密码锁开锁时每次输入的密码都不一样。密码主要由随机码、内置口令和随机序号经过一定的算法计算出来。
直接采用C51语言的mad();语句实现的随机码具有一定的随机顺序,每次开机后所得的随机码序列基本一样,属于伪随机码。因此对于保密性产品来说,用rand();语句具有缺陷。本设计采用定时器实现随机序列。定时器设置为模式2,即可自动重装载的8位计数器,初值为100。密码锁控制器开机后,定时器开始定时。通过用户3次按键产生中断,读取定时器低八位的值,将其转换为十进制并取低两位存到一个预先定义好的6位数组中的2个元素。3次按键共产生3次2位数的随机码,组成6位随机码。该随机码重复概率很小,为1/1 000 000。因此,对定时器的采样,可实现真正的随机码。
用户自产生一个2位随机序号,与随机码、密码生成器的内置口令经过一定的算法计算生成密码。密码锁控制器根据用户输入的随机序号和密码,将随机序号、随机码、以及内置口令,利用与密码生成器生成密码同样的算法计算出密码,与用户输入的密码比较验证。
STC单片机自带EEPROM,用EEPROM来储存密码,关机后密码不丢失,并可随意更改密码。每次开锁密码都不一样,可有效预防恶意窥测行为,并能清楚进出金库的人员,且无需经常更换密码,方便管理。
5 结束语
本文设计的金库门电子密码锁系统,解决了金库门管理的“一密二钥三分离”中密码的管理和分离的规定。每次开机密码都不一样,有效防止密码泄露,增强了金库管理的安全性。本电子密码锁系统,不仅可以运用于金库门,同时适用于其他要求高保密性的产品或场所,且一个密码生成器可配备若干个密码锁控制器,方便管理。