一种密码键盘生成密文的方法技术领域
本发明涉及一种密码键盘生成密文的方法。
背景技术
银行的ATM或者VTM机的密码键盘生成密文一般是直接根据银行密钥
进行加密生成密文;若有不法分子通过非法读取密码键盘存储的银行密钥等
方式得到了银行秘钥,则可以轻易的破解生成的密文从而得到用户的密码,
因此这种方式安全性并不高。为了防止这种情况的发生,目前有些厂商通过
在硬件上增加一个加密芯片,来对整个密码键盘进行加密,但由于加密芯片
一般都比较昂贵,会导致整机的生产成本上升,不利于厂商的经营。
发明内容
为了解决密码键盘容易被破解、采用加密芯片成本过高的技术问题,本
发明提供一种能够有效防止密码键盘输入被破解,且实现成本较低的密码键
盘生成密文的方法。
为了实现上述技术目的,本发明的技术方案是,
一种密码键盘生成密文的方法,包括以下步骤:
步骤一:检验密码键盘是否合法,非法则结束整个密文生成过程,合法
则继续执行;然后设置密码键盘的加密算法;再向密码键盘的存储区域中装
载从银行获取的包括主密钥和工作密钥的银行密钥;
步骤二:处理用户输入的密码,首先获取用户输入的密码,然后通过主
密钥解密工作密钥,并根据步骤一设定的加密算法结合工作密钥对密码进行
加密得到密文及键码值;然后根据键码值的位数对密文进行拆分,将拆分后
的密文A和密文B分别存储在密码键盘的存储区域内;
步骤三:银行系统对用户输入的密码进行验证,首先将拆分后的密文通
过哈希算法计算得到字符串校验码;然后将将密文和字符串校验码发送到银
行系统进行解密认证;银行系统对接收到的密文及字符串校验码进行验证,
判断是否被篡改;若没有被篡改,则将密文A及密文B合成完整的密文,再
验证用户输入的密码是否正确,结束验证。
所述的一种密码键盘生成密文的方法,所述的步骤一中,检验密码键盘
是否合法,是通过设置环境变量及配置参数,对密码键盘进行初始化来完成
的,如可进行初始化,则判断为合法,否则为非法。
所述的一种密码键盘生成密文的方法,所述的步骤一中,键盘密码的加
密算法采用ISO9564-0、IBM3624或ASCII的PIN加密模式中的一种,加密
算法为DES或3DES。
所述的一种密码键盘生成密文的方法,所述的步骤一中,先装载主密钥,
再通过主密钥读取工作密钥进行加载,并选择密码键盘上的存储区域,将密
钥装载到其中。
所述的一种密码键盘生成密文的方法,所述的步骤二中,首先获取用户
输入的密码,然后由主密钥解密得到工作秘钥,再根据之前设定的加密算法
结合工作密钥对密码进行加密得到密文及键码值,其中密文为预设位数的字
符串,键码值为用户输入的密码的位数。
所述的一种密码键盘生成密文的方法,所述的步骤二中,根据键码值的
位数对密文进行拆分,将密文分拆为包含与键码值位数相同的字符数的密文
A,以及包含余下字符数的密文B。
所述的一种密码键盘生成密文的方法,所述的步骤三中,系统在密码键
盘的存储区域获取密文A,将密文A通过哈希算法计算得到字符串校验码A’;
获取密文B,将密文B通过哈希算法计算得到字符串校验码B’;然后将密文
A、字符串校验码A’、密文B、字符串校验码B’组合成一个数据包发送到银
行系统进行解密认证。
所述的一种密码键盘生成密文的方法,所述的步骤三中,银行系统将得
到的密文A及密文B通过哈希算法计算得到校验码A’及校验码B’进行验证,
判断是否被篡改,若没有被篡改,则将密文A及密文B合成完整的密文,再
验证用户输入的密码是否正确,否则不作合成,直接结束验证。
本发明的技术效果在于,通过基于键码值的位数对生成的密文进行拆分
存储及发送,使得密文的安全性进一步提高,同时由于拆分生成的密文是基
于原有的键码值进行拆分,不改变原有银行密钥的加密方式,所以不会造成
解密逻辑混乱的情况,稳定性较高。
附图说明
图1为本发明的流程图。
具体实施方式
参见图1,为了实现对用户通过密码键盘所输入密码的加密保护,本发明
包括以下步骤:
首先是确认密码键盘本身的可靠性,在将用户输入的密码加密存储之前,
系统首先要对密码键盘进行初步的设定:
(1)设置环境变量及配置参数,对密码键盘进行初始化,即检验密码键
盘是否合法,如果密码键盘可以进行初始化,则认为是合法的,否则认为不
合法;
(2)设置密码键盘的加密算法,可以采用选择PIN加密模式,加密模式
包括且不限于ISO9564-0,IBM3624,ASCII等,可供选择的加密算法包括且
不限于DES,3DES;
(3)装载银行密钥,密钥对从银行获取,密钥对包括主密钥和工作秘钥,
先装载主密钥再装载工作密钥,这是因为要读取工作密钥必须通过主密钥进
行加密读取,密码键盘上通常有0-15区共16个存储区域,实际使用时可随机
选择,将密钥装载到其中。
在对密码键盘进行初步的设定后:
(4)获取用户输入的密码,先读取主密钥进而由其解密所对应的工作密
钥,再根据之前设定的加密算法和工作秘钥来对密码进行加密,得到字符密
文,本实施例中设字符密文的长度为16位,同时得到键码值,键码值即“*”,
本实施例中设用户输入的密码是6位,则键码值显示为6个“******”;
(5)根据键码值的位数对密文进行拆分,如键码值的位数是6位,则将
密文拆分成包含前6位字符的密文A及包含后10位字符的密文B;
(6)将密文A及密文B分别存储在可选的16个存储区域内;
在银行需要验证用户输入的密码是否正确时,
(7)系统在存储区域获取密文A,将密文A通过哈希算法计算得到16
位字符串校验码A’;获取密文B,将密文B通过哈希算法计算得到16位字
符串校验码B’;
(8)将密文A、字符串校验码A’、密文B、字符串校验码B’组合成一
个48位数据包发送到银行系统进行解密认证。
(9)银行系统将得到的密文A及密文B通过哈希算法计算得到校验码A’
及校验码B’进行验证,判断是否被篡改。
(10)若没有被篡改,则将密文A及密文B合成完整的密文,再验证用
户输入的密码是否正确,结束验证。