CN103679935A - 终端合成密码 - Google Patents

终端合成密码 Download PDF

Info

Publication number
CN103679935A
CN103679935A CN201310585526.6A CN201310585526A CN103679935A CN 103679935 A CN103679935 A CN 103679935A CN 201310585526 A CN201310585526 A CN 201310585526A CN 103679935 A CN103679935 A CN 103679935A
Authority
CN
China
Prior art keywords
data
password
code
transcoding
character
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201310585526.6A
Other languages
English (en)
Inventor
汪风珍
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to CN201310585526.6A priority Critical patent/CN103679935A/zh
Publication of CN103679935A publication Critical patent/CN103679935A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

终端合成密码是采用持卡人输入的数据与银行卡带有的数据结合,利用银行卡携带的数据等作为数据表或数据连接路径变量,利用具有密码运算能力的终端设备(柜员机)等设置相应的数据表和数据,据此引入终端程序的数据而获得的一种多密码,这种密码只需要银行卡提供非常简单的数据就能获得非常复杂的密码,其密码运算交由终端计算机系统完成,这样,就可以使用原理相对简单的不能传播病毒的磁卡类银行卡,避免了IC卡能够携带或传播病毒的弊端。

Description

终端合成密码
一:所属领域:本发明属于银行卡的密码技术。
二:背景技术:下面先介绍常用的银行卡密码的大致情况,
我们所使用的密码是一个通俗说法,实际是通行码(password),不过通行码和密码在设计和原理方面有很多相似性,现代的密码都是利用程序设定一个加密协议,即通过一定的算法保障加密的一致性以方便不同的终端进行验证,密码的作用就是防止未经授权的人进行访问,密码这里分为三类,即终端依据持卡人输入结果进行加密的,这种密码缺陷就是只要别人偷看或知晓输入结果,就可以获得正确的密码,一般网站的MD5密码就是这种,一种是硬件式的,需要硬件和人工输入结合,比方说U盾和IC卡密码,它们是基于1024位非对称密钥算法的,还有一种是生物密码,也就是利用人体某些器官或组织的一些特殊结构终身具有一定的稳定性和单一性,这种特殊结构能够被计算机系统读取的验证码,比方说指纹或虹膜,这类密码的缺点是持卡人无法主动修改,欠缺能动性,而且服务器存贮的数据与检验的数据并不完全一致,需要利用模糊算法通过比较获得答案,模糊算法很耗系统资源,目前的服务器系统很难承担大量的指纹请求验证,多用于本地验证,
MD5是一种唯一的信息散列值算法,它是一种不可逆的加密算法,MD5对一个具体的原始密码有一个唯一的对应加密值,这为词典或暴力破解法提供了便利,尤其银行卡密码本身并不是很复杂,破解MD5密码也相对比较容易;
而非对称算法主要是利用公钥(publickey)与(privatekey)私钥算法,也就是公钥加密则私钥解密,私钥加密则公钥解密,公钥与私钥是一一对应的而且只使用一次,非对称算法从理论上比MD5算法的安全性要高,但是,由于IC卡或U-key是一个微型计算机系统,假如黑客恶意编写病毒程序,通过柜员机系统传播病毒或进行破坏活动,这个问题也不好解决。
三:发明目的:设计一种多密码,加大现有银行卡特别是磁卡类银行卡(含存折)的密码破解难度。
四:技术方案:基于硬件的终端合成密码,它是银行卡专用密码,本发明把银行卡当成动态数据库与静态数据库存贮介质,动态数据就是银行卡数据存贮介质中的可读写数据,它们的改写受服务器端控制,静态数据就是不能改写的数据,终端合成密码就是通过银行卡提供的动态数据或其他数据作为数据表或是数据连接路径变量或者是部分密码数据,利用它们从终端程序数据库中选择性的获得复杂的数据参与合成或控制的密码,用户密码,预警密码,背面密码与指纹密码都是利用终端合成密码原理合成的,这种密码可以适用任何银行卡,采用磁条数据设计这种密码可以有效防止病毒侵入银行卡支付系统。
五:有益效果:这种设计可以适用任何银行卡,采用的终端合成密码技术由于需要提供几方数据,只要持卡人有一方数据没有被他人知晓,就能保证卡内资金安全,由于终端合成密码的密码组合数非常多,加大了密码破解的难度,与目前的磁卡和芯片卡比较,终端合成密码的安全强度和芯片卡的密码差不多,却没有芯片卡的病毒安全隐患,由于本设计也可以基于磁卡原理,卡片费用低廉。
六:具体实施方式:本说明书论述的实施方式介绍了实施本专利的一般的过程,但实施本专利并不一定需要完全遵循这里描述的过程,它仅是实施本专利的一个特例,为了方便描述,本说明书所指的输入密码和现有银行卡的用户密码是完全一致的,取值都是六位阿拉伯数字,终端合成密码就是通过银行卡提供的动态数据或其他数据作为数据表或是数据连接路径变量或者是部分密码数据,利用它们从终端程序数据库中选择性的获得复杂的数据参与合成或控制的密码,终端合成密码有两种合成方式,一种是直接合成,也就是将两种或两种以上的数据利用一定的编程规则合成新数据,然后利用MD5之类的软件加密,但是,磁卡本身无法提供太复杂的数据,利用这种方法合成的密码安全等级不是很高,这里不建议采用,还有一种是间接合成,本发明例举的就是间接合成,它与U盾或芯片卡通过自身微电脑提供的密码加密程序合成密码的原理有区别,它是由持卡人提供的密码与银行卡提供的动态或静态数据为原始密码或原始密码的中间数据,利用具有密码运算能力的终端设备(手机,柜员机与家用电脑等)提供的程序生成的电子加密数据,终端合成密码在网上银行,手机银行与柜员机使用的是不同的密码,不过,柜员机与POS机使用的是相同的密码,
它大致由
1:引进字符串;
2:截取字符串;
3:进制转换;
4:字符串字符转换;
5:改变排列位置;
6:替代部分字符
这6步组成,通过采用其中的一种或多种加密方法综合形成的电子数据,引起字符串就是由简单字符引进数据比较复杂,比较长的字符串;而截取字符串就是只截取引进的字符串的一部分数据,或者是改变原字符的位置等编程方法;进制转换就是将原数据转换成另一种进制的数据;字符串字符转换就是把一个字符转换成另一个字符或者是把一组字符转换成另一组字符,每个字符的转换遵循一定的编程规则;替代部分字符就是把部分字符替代成另一种形式的字符,替代后的字符与没有替代的字符存在相同的部分字符,以及替代插入点使用逻辑判断,这些合成方法可以有先后顺序的不同,前提是方便设计即可,
终端合成密码的合成方式:其基本特征就是由银行卡的动态数据提供数据表连接路径变量或指定部分数据的位置等;银联终端设备等存贮一定数量的数据表,它们在同一数据库下(在编程时,一般都是先连接数据库,再连接数据表),数据表名称形式AB,如果A相同而B不相同(A为数据表主名称,B为阿拉伯数字序号),就表示它们为同一类型数据表,数据结构包括字段和数据类型都相同,只有数据不同,示例中是指字符替代码表,转码表和密码排列控制表,举例sql语句select*from chinese_FourCodeB表示链接到字符替代码表,chinese_FourCode就是数据表名称形式的A,B就是银行卡的动态数据提供的连接路径变量,假如银行卡对应的此数据B为7,就是通过编程语句指定链接到表名为chinese_FourCode7的字符替代码表,转码表和密码排列控制表的连接原理也是一样,程序据此连接到指定的数据表,为了安全,连接数据可以分为公有数据表连接路径变量与私有数据表连接路径变量数据,用户密码,背面密码在合成各自的终端合成密码时采用公有数据表路径变量指向同一个转码表和密码排列控制表,但是密码加载码表只有一个,程序在获取密码加载码时是通过银行卡提供的几组数据,这几组数据与密码加载码的ID号按照一定的编程规则连接,也就是数据为C(C只能为阿拉伯数字),就把C经过编程处理,获得一个数据,就连接该数据对应的ID号进而获得密码加载码,它也是公有连接,而字符替代码表是私有连接;可以通过改写它们修改密码,背面密码只能由持卡人在柜员机完成初始化,这里的初始化会同时初始化隐形卡号和身份证号码替代码,虽然各种数据表可以自由设计,但是,程序设计完成后,所有的数据表及数据以及合成规则在所有的同一类型的实体终端是完全一样的,这样,在每一台同一类型的实体终端上,都会获得完全一致的密码数据,也就是说这种密码设计同样遵循所有的同一类型的实体终端密码算法一致这个基本原理,而网银与手机银行的初始化工作在申请人在柜台申请开卡之后就可以进行,它们并没有先后顺序,持卡人申请开通相应的服务即可,网银的存贮模块与磁条的非常相似,手机银行程序没有数据表连接路径变量B这个选项,是直接利用对应的数据表加密,也就是相应的数据表程序中只有一个,合成之后,把扫描到的二维码等智能手机能够识别的数据和加密后的数据进行加密即可,发送数据时,为了安全,可以利用电话卡的后台锁定技术等辅助锁定交易者的身份,
下面介绍终端合成密码需要的专用术语及其定义以及数据表示例设计:
A:62进制,这里的62进制是指采用62位字符表示的一种数制,这种数制可以和10进制数据或2进制数据完成互换,本发明利用数字与大小写字母表示这种数制,它们是指定利用阿拉伯数字0到9表示0到9,字母的小写a到z表示10到35,字母的大写A到Z表示36到61的的数制算法,也可以有其他的指定方案,后面部分讲述的数字或字母的本位码,转码算法等也遵循同样的规律,本发明中,密码加载码表示区段为十进位00000(0)到99999,相应的62进制为000(0)到q0T,也就是说,将十进制的五位数变成了三位数字与字母组合数,这里的62进制算法介绍一种除权值余数与结果综合取值法,任何进制(进制设为N)的数,其右起第一位权值为1,第二位权值为进制数N,第三位权值为进制数的平方N2,本处只需要用到三位数,62的平方为3844,因此,将五位数除以3844,将余数除以62,将第一次的结果,第二次的结果和最终的余数按顺序排列,用62进制表示即可,99999除以3844,结果是26,余数是55,不足62,记为0,其结果是26,0,55,查表A知26为q,55为T,结果q0T就是这样算出来的:
表A:62进制算法和数字与字母本位码算法换算表
0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
l m n o p q r s t u v w x y z A B C D E F
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
G H l J K L M N O P Q R S T U V W X Y Z
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
B:数字与字母的转换算法,用一个数字或字母获得另一个数字或字母或者是用一组数字或字母获得另一组数字或字母的转换算法,转换算法遵循以下规律
Figure BSA0000097808310000031
不同的源码相同的算法转换之后结果是不能相同的;
Figure BSA0000097808310000032
同一源码的几种算法的转换结果互相也不能相同;
Figure BSA0000097808310000033
转码的结果也不能与源码相同;
Figure BSA0000097808310000034
转码要设置几种转码算法,以强化密码的组合复杂性,
示例是设置四种,即A,B,C,D算法,它是以数字和字母的本位码为基础条件进行转换的,
数字的本位码:数字0到9的本位码分别是数字0到9;
小写字母的本位码:字母a到z的本位码分别是数字10到35;
大写字母的本位码:字母A到Z的本位码分别是数字36到61;
这里例举的是ABCD算法,其中A算法,B算法,C算法是以本位码为基础进行的数学运算,但是D算法经过人工调整,没有什么算法规律,
A算法:数字或字母的本位码加该本位码后的第2位奇数就是此数字或字母的A码转码算法,结果≥62的,就减62,记载其本位码对应的数字或字母,转码记为A;
B算法:数字或字母的本位码加该本位码后第13位奇数就是此数字或字母的B码转码算法,结果≥62的,就减62,记载其本位码对应的数字或字母,转码记为B;
C算法:数字或字母的本位码加30就是该数字或字母的C码转码算法,结果≥62的,就减62,记载其本位码对应的数字或字母,转码记为C;
D算法:D算法基本遵循数字或字母的本位码加该本位码后的第3个偶数就是该数字或字母的D码转码算法,结果≥62的,就减62,为了防止数据相同性冲突,做了部分位置调整,记载其本位码对应的数字或字母,转码记为D,见表B:
表B:数字与字母的ABCD算法转码对照表
源码 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k
A 3 6 7 a b e f i j m n q r u v y z C D G H
B p s t w x A B E F l J M N Q R U V Y Z 2 3
C u v w x y z A B C D E F G H l J K L M N O
D 6 7 a b e f i j m n q r u v y z C D G H K
源码 l m n o p q r s t u v w x y z A B C D E F
A K L O P S T W X 0 1 4 5 8 9 c d g h k l o
B 6 7 a b e f i j m n q r u v y z C D G H K
C P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9
D L O P T W S X 0 1 4 5 8 9 c d g h k l o p
源码 G H l j K L M N O P Q R S T U V W X Y Z
A p s t w x A B E F l J M N Q R U V Y Z 2
B L O P S T W X 0 1 4 5 8 9 c d g h k l o
C a b c d e f g h i j k l m n o p q r s t
D s t w x A B E l J F M N Q U V R Y Z 2 3
使用说明:例如源码数据为Q,按A算法就是转换成J,B算法就是转换成5,C算法就是转换成k,D算法就是转换成M,只要对照表查询就可以了,其实也可以设计其他的数据表或算法,但是,只是注意设计时这里有三个基本要点,就是不同的源码相同的算法转换之后结果是不能相同的,而同一源码的几种算法的转换结果互相也不能相同,而且转码的结果也不能与源码相同,从它的设计原理我们可以知道,转码前后的每一个数字和字母都不会相同,这是一个最基本的设计要点,调用时,A算法,B算法,C算法都可以直接使用数据表调用,也可以使用数学运算换算,但是,D算法经过了人工调整,一般只能使用数据表调用,示例中这两张数据表一般是固定的,也就是所有的终端采用的数据都是相同的,表A,表B它们其实也可以设置几张表,使用编程语句完成选择性调用,
①:密码加载码表:原始密码是和一定长度的字符段利用一定的编程规则进行加密的,这种原始密码字符段就是密码加载码,密码加载码和其ID号对照表就是密码加载码表,一般密码加载码需要一定数量的组数,本说明书示例设计密码加载码共10000组,见表1:
表1:密码加载码表(仅仅显示部分内容)
lD 密码加载码 ID 密码加载码
1 69135,78450,13269,87563,57 3 67520,10036,98855,22216,42
2 19876,23400,19888,57829,36 10000 99856,22367,85430,01091,56
使用说明:终端合成密码要调用这些数据中的几组数据参与密码的合成,银行卡开卡时,系统会生成几组供调用的连接变量数据,目前的银行卡密码是6位,所以是6组0到9999之间的可读写数据为调用的连接变量,由于ID号是自动编号,而一般ID号是从1开始的,银行卡数据与ID号挂钩时,有可能出现0,因为磁卡为了节省空间,允许出现0,手机银行与网上银行的记忆模块容量也不需要很大,解决方法有两种,一种是其他的一一对应,而0则使用IF语句,也就是出现0,就连接ID号为10000的密码加载码数据,还有一种方案就是把所有的原数据加1,比方说磁卡存贮的为353,就连接ID号354的密码加载码数据,这样,系统检索连接变量,把对应的密码加载码引入程序就完成了数据调用,而背面密码调用此数据时可以直接调用,也可以先进行一定的规则编程,这里例举一种方法,就是把用户密码的6组原始密码数据转换成10进制数据,分别除以一个特定的数,比方说11,把余数加1,就从这一位开始截取背面密码的原始数据,截取四位,这样获得6组四位数字的代码,如果没有用户密码的这6组数字,就用背面密码的6组数字除以一个数,比方说11,其他操作则是一样,把这6组数字和银行卡对应的6组连接数分别相加,是每一位分别相加,结果≥10的,就减10,用6组新数据完成密码加载码的调用工作,虽然银行卡记载的密码加载码的调用的连接变量只有6组,我们还是可以使用多种方法获得新的6组数,这样密码更加复杂,两种不同的密码原始数据之间可以存在交替使用,单独破解一个密码是没有用的,假如某银行卡提供的对应的数据为3,按第一种方法就是调用为67520,10036,98855,22216,42到程序,按第二种方法就是调用99856,22367,85430,01091,56到程序,其他的也是一样的方法,密码加载码表是本设计中一个最重要的表,它的设计质量直接影响到密码的复杂程度,本说明书密码加载码为22位随机数字,这个22位是依据说明书描述需要和易于理解人为规定的,可以依据编程需要设定,这种密码可以随着计算机运算能力的提高相应升级,只需要截取字符串时改变相关参数以及原始字符串进行升级,即可以很方便的提高密码组合数,阻止暴力或词典破解,示例由截码函数substring的参数来决定,start值确定起始位置,length确定长度,假如start值为15,length值为10,22位就不够,假如start值为11,22位后面的两位就只会占据数据库空间,永远无法使用,这里要注意程序设计随机字符串时应保证不出现连续11个或以上相同数字或两个数字重叠(就是相同数字最高只允许出现截取后的字符段长度,这样才不会出现密码不同,截取的字符段却相同这种情况),一些比较特殊的组合比方说7个8等也要尽量避免,在设计数据库时这是可以人为控制的,再就是组合数,这里建议10000组,也就是ID号从1到10000,数据太庞大,手机应用有困难,数据太少,密码安全性不够好,采用10000位,银行卡就是四位数字0到9999,6组数据为24位数字共24字节,在安全性与空间方面有一个适度的平衡,据此,银行卡的密码组合在这里就拓展到亿亿亿次位,即10的24次方;
②:转码表:待转码的每个字符作为源码,经过一定的规则转换成另外一个字符,确定转码方向的规则和转码引导值(也就是编号)对照表就是转码表,它的特征如下:
Figure BSA0000097808310000051
转码规则位数由源码位数确定;
Figure BSA0000097808310000052
转码的项数由转码算法确定;
Figure BSA0000097808310000053
转码引导值MAX值由源码位数和转码算法确定,具体是转码算法的源码位数的次方,转码算法为N种,源码位数为M,则转码引导值MAX值为NM
转码引导值由源码获取,将源码转换成10进制数据,将10进制数据除以NM,余数为几,就查找该数字编号对应的转码规则进行转码,
本说明书示例是四种算法即A码,B码,C码与D码转码算法,转码控制值由源码位数和转码算法确定,本说明书是64(4*4*4)项,见表2;
表2:转码表(仅仅显示部分内容)
编号 转码 编号 转码 编号 转码 编号 转码 编号 转码 编号 转码
0 AAA 5 ABB 10 ACC 15 ADD 20 BBA 25 BCB
1 AAB 6 ABC 11 ACD 16 BAA 21 BBB 26 BCC
2 AAC 7 ABC 12 ADA 17 BAB 22 BBC 32 BCD
3 AAD 8 ACA 13 ADB 18 BAC 23 BBD 28 BDA
4 ABA 9 ACB 14 ADC 19 BAD 24 BCA 29 BDB
使用说明:原始数据经过截码后,会变成00000到99999之间的数字,用户密码和背面密码都有6组,截码后分两种情况,一种是一组又分成两个00000到99999之间的数据(含00000到99999),一种只有一个00000到99999之间的数据(含00000到99999),只有一个的是自转码,也就是自身的十进制数据除以64,余数为几,就以该编号对应的转码规则进行转码,例举“69853”,69853除以64,余数为29,查表2为BDB,将69853转换成62进制数据,为18,10,41,查表A为iaF,就是将i转码为B码,a转码为D码,F转码为B码,查表B就是ZqK,而两个数据甲和乙就是将它们的10进制数据分别除以64,甲的余数为几,就从该编号对应的转码规则转码乙,而乙则转码甲,也就是互相控制进行转码,例举“1366498713”,先五个一分为13664和98713,二者分别除以64,其余数分别是32和25,其62进制数据分别是3yo,pG9,就是用编号25对应的转码规则BCB转码3yo为w2b,编号32对应的转码规则BCD转码pG9为ean,在实际设计过程中,同一个表的编号与转码是一一对应关系的,但是不同的表允许部分数据相同,比方两张表编号25同为BCB等,假如表格比较多,要保证编号与转码一一对应,并不容易,特别是后面提到的字符替代码表,要保证编号与替代码的这种关系就非常困难了,为了解决实际设计问题,发明人推荐一种抓阉法,也就是采用比较规律的办法先行书写相关数据,比方说此表从AAA到DDD,字符替代码可以按照英文的顺序书写英文以及部首与笔画数等目前字典排布的方法书写中文,这样凑齐一万个就没有多少技术难度了,而且很容易保证不出现相同的数据,然后揉成纸团,混合,再在一张比较大的纸张上面分成100个区域,每一个区域放一个,编号就是1到100,统计完后,又放第二批,编号101到200,这样,顺次下去就完成所有的编号与替代码的统计工作,做完后,重新混合,又进行第二张表的工作,虽然有些繁琐,但是能够保证设计符合要求,本表相对容易很多,就是书写64个纸团,混合好后,直接与编号一一对应,抓阉后又重新混合,再抓阉,数据表连接路径变量和控制原始值由银行卡指定,数据表连接路径变量由数据表的个数决定,也就是假如只有10个转码表,相应的变量也只能有10个,不允许出现空连接,后面的三个表格也是一样不允许出现空连接,
③:密码排列控制表,经过转码加密后的密码的排列次序是与原始密码的排列次序是一致的,合成过程中改变密码排列次序的表就是密码排列控制表,密码排列控制表的待排列部分不一定与原始密码的部分数相同,可以利用一定的编程方法将密码分成几部分后进行重排,密码排列控制表由控制值和排列次序两部分组成,控制值由分成的部分数决定,也就是计算过程中不允许出现空连接,
本说明书仅仅是一种示例排列法,见表3,
表3:密码排列控制表(仅仅显示部分内容)
编号 次序 编号 次序 编号 次序 编号 次序 编号 次序 编号 次序
0 423156 5 123645 10 124563 15 125346 20 126435 209 612354
1 123465 6 124356 11 124536 16 125436 21 126453 210 612435
2 123546 7 124365 12 125643 17 125463 22 126354 211 612453
3 123564 8 124653 13 125634 18 126543 23 126345 212 612543
4 123654 9 124635 14 125364 19 126534 24 612345 213 534612
密码排列控制表由控制值和排列次序两部分组成,控制值为0到718(这种排列有720种,即6*5*4*3*2=720,将123456这种排列次序不用),而排列次序值就是数字1到6的随机排列,一个数字只允许出现一次,这个1到6就是表示原始次序,示例原始用户密码235691,假如第4位为预警密码,就将第4位剔除,控制原始值由密码分成的重排部分确定,本说明书中密码是分成6部分进行重排,只能是1到6,假如是1,就是用户密码或背面密码第1组的第一个经过转码后的62进制数据,转换成10进制数据,除以719,余数为几,就查找编号对应的次序,进行重排即可,
④:字符替代码表,将密码的一部分字符用其他的字符进行取代的一种加密方法就是字符替代,这个表的基本特征是:
字符和编号是互相唯一对应的关系;
字符替代码表所有的表采用的所有字符都是相同的,不同的表只是字符与编号不同;
Figure BSA0000097808310000063
取代后的字符与没有替代的字符最好有相同的字符类型;
Figure BSA0000097808310000064
一般被替换的字符是同一类型的字符,比方说要替换数字,那么就替换全部的数字,而换上去的可以有不同类型的字符;
Figure BSA0000097808310000065
被替换的字符应一次替换几个,而插入字符的位置,利用逻辑语句进行判断,这会加大破解难度;
Figure BSA0000097808310000071
从理论上看,可以利用任何一种字符替代另外一种字符,但是,应该考虑替代后密码数据字节数和其他因素,要利于编程设计和实际需要,
字符替代码表最好采用10000个字符,要替代二级英文字符,密码的安全性才比较高,用三位数字编号不够数,如果是五位,又很难有那么多的字符表示,软件设计工程量也偏大了,见表4,
表4:字符替代码表(仅仅显示部分内容)
编号 替代码 编号 替代码 编号 替代码 编号 替代码 编号 替代码 编号 替代码
0000 0005 0010 0015 0020 0025
0001 0006 0011 0016 0021 0026
0002 0007 0012 0017 0022 0027
0003 0008 0013 0018 0023 0028
0004 0009 Ag 0014 0019 C 0024 0029
使用方法:密码数据处理的结果是数字与英文大小写字母的组合,最后一步密码处理程序就是利用字符替代码表进行处理,英文大小写字母不予改变,将其中的数字提取出来,把提取的数字采用一定的规律例如按先后顺序四个数字一组,最后一组不足四位时,取0补足,例如23就是0023,查找对应的字符替代码,直接替换,例如四个数字为“0013”,就存贮“不”,四个数字为“0009”,就存贮“Ag”,四个数字为“0019”,就存贮“C”,当替代之后,插入的地方则采用类似IF这样的逻辑语句确定,这里例举一种方法,就是利用取余函数MOD,将四个数字除以4,余数为0,就插入原第1个数字的位置,余数为1,就插入原第2个数字的位置,余数为2,就插入原第3个数字的位置,余数为3,就插入原第4个数字的位置,替代完成后,将空格清除,就获得了新密码,字符替代码表规定所有的字符都是相同的是为了防止服务器端破解,例如,假如某个字只在某一个表出现,则凡是带有此字的密码的字符替代码表的连接路径就已经知晓了,这是不允许出现的,使用字符替代码表的目的是为了降低数据传输和数据存贮的压力,以及重新排序,将转码的结果与替代的结果进行混合,也会使密码破解变得更加困难,中文包括不常用的字是有7244个以上的,从二进制存贮原理看,目前的计算机采用8bit一字节,这其中1bit为效验码,因此,其排列组合数为2的7次方即128,中文一个字符是两字节,其排列组合数为16384,也就是说,采用两字节代表中文,极限值为16384,不存在设计问题,从它的设计原理看,最终密码是英文大小写字母与中文的组合,而且这种密码的字节数不是固定的,从理论上看,也可以利用数字替换掉字母,但是,这种设计会使数据变得庞大,不太可取,如果使用其他的字符也是可以的,但有几个设计要点,就是替代后的字符与没有替代的字符最好有相同的字符类型,本说明书中英文没有改变,而替换字符也有英文,两种英文混在一起,一般被替换的字符是同一类型的字符,比方说替换数字,那么就替换全部或部分的数字,而换上去的可以有不同类型的字符,再就是被替换的字符应同时替换几个,而插入字符的位置,利用逻辑语句进行判断,这会加大破解难度,终端合成密码的具体合成过程:软件部分设计参考如下,这里的例子仅仅描述了申请人认为一种比较好的实现终端合成密码的方式而已,其先后顺序也可能改变,比方第A步和第B步,但是,明显不合逻辑的更改顺序是不可以的:
A:引进密码加载码:利用密码加载码的6组连接变量或通过计算获得的连接变量,通过查找对应的ID号或编程之后对应的ID号,将其对应的密码加载码引入程序,下面的步骤中,通过银行卡的连接路径变量连接相应的数据表就不再一一说明;
B:获取start值:将用户密码和背面密码的6组10进制数据除以13,把余数加1,分别获得6组1到13的6组数,用户密码没有其原始的只读数据的,就是我们输入的6位密码分拆后,分别加1,获得1到10的6组数,这些数据就是第三步中的start值的来源;
C:截取字符串:在函数substring(expression,start,length)中,expression就是表示密码加载码,start的值就是第2步获得的结果,length统一规定为5的倍数,1至5组设定为10,第6组设定为5,以密码加载码为9985622367854300109156说明,假如现在start值为11,为substring(9985622367854300109156,11,10),上述函数意思就是把9985622367854300109156进行截取字符串,从第11位处开始截取,截取长度10位,9985622367(8543001091)56,就是获得括号中的十位数,采用相同或类似的方法,完成截取字符串或者是通过left,right等函数改变字符位置等的工作,本说明书依据substring函数获得的用户密码和背面密码分别都是获得6组共55个阿拉伯数字密码,将它们转换成62进制数据后,就是33位数字与字母密码;
D:转码:将所有的数据按照转码规则进行转码,为了强化防破解效果,这里建议多转码几次;
E:重新排序:将预警密码单独列出,其他的用户密码和背面密码进行重新排序;
F:数据效验:重新排序后,背面密码的33位数字与字母组合,依旧按照6位一分,最后为3位划分成6组,分别是1到6组,而用户密码有可能是27位,也可能是30位,划分位置时,要留下预警密码的位置,也就是预警密码的原位置不能改变,并且把预警密码插进来,这样划分出6组,它们都是将用户密码与预警密码的62进制数据和所有的组数中的第一个三位数据分别相加,是每一个字母或数字的本位码相加,结果≥62的,就减62,记载相应的本位码,用户密码没有相应数据的,就是把输入的密码分拆后,分别相加,完成这一步后,把预警密码提取出来,
G:替代字符:把它们分别利用字符替代码进行处理,获得最终的终端合成密码,
网上银行与磁卡的终端合成密码程序是一样的,而手机银行考虑程序的占用空间问题,不建议使用数据表连接路径变量,而是直接选择数据表,将合成后的结果再利用扫描的二维码数据或其他智能手机可以识别的符号进行加密,手机银行的程序有多个数据表数据存在差别的版本号选择,这点与网上银行有区别,持卡人下载程序时要记住版本号,否则,手机刷机后会导致手机银行无法使用,版本号设置只是版本号后面的部分有区别,方便持卡人记忆,
我们其实还可以利用left,right之类的函数或者是一定的编程规则进行合成,但是,不论是哪种合成,一定得保证合成密码的复杂性与唯一性和几种密码之间的数据关联性以防破解,存贮卡的终端合成密码的合成原理也是一样的,就不再详述了。

Claims (4)

1.一种具有多个密码的银行卡密码设计方法,其特征是:它是银行卡专用密码,是基于硬件的通过银行卡终端合成的多密码,本发明把银行卡当成动态数据库与静态数据库存贮介质,动态数据就是银行卡数据存贮介质中的可读写数据,它们的改写受服务器端控制,静态数据就是不能改写的数据,终端合成密码就是通过银行卡提供的动态数据或其他数据作为数据表或是数据连接路径变量或者是部分密码数据,利用它们从终端程序数据库中选择性的获得复杂的数据参与合成或控制的密码,用户密码,预警密码,背面密码都是利用终端合成密码原理合成的,这种密码可以适用任何银行卡,采用磁条数据设计这种密码可以有效防止病毒侵入银行卡支付系统,其网上银行与手机银行可以采用与柜员机不同的数据进行加密。
2.依据权利要求1所述的终端合成密码的数据连接与合成,其特征是:
终端合成密码就是通过银行卡提供的动态数据或其他数据作为数据表或是数据连接路径变量或者是部分密码数据,利用它们从终端程序数据库中选择性的获得复杂的数据参与合成或控制的密码,终端合成密码有两种合成方式,一种是直接合成,也就是将两种或两种以上的数据利用一定的编程规则合成新数据,然后利用MD5之类的软件加密,但是,磁卡本身无法提供太复杂的数据,利用这种方法合成的密码安全等级不是很高,这里不建议采用,还有一种是间接合成,本发明例举的就是间接合成,它与U盾或芯片卡通过自身微电脑提供的密码加密程序合成密码的原理有区别,它是由持卡人提供的密码与银行卡提供的动态或静态数据为原始密码或原始密码的中间数据,利用具有密码运算能力的终端设备(手机,柜员机与家用电脑等)提供的程序生成的电子加密数据,终端合成密码在网上银行,手机银行与柜员机使用的是不同的密码,不过,柜员机与POS机使用的是相同的密码,
它大致由
1:引进字符串;
2:截取字符串;
3:进制转换;
4:字符串字符转换;
5:改变排列位置;
6:替代部分字符
这6步组成,引起字符串就是由简单字符引进数据比较复杂,比较长的字符串;而截取字符串就是只截取引进的字符串的一部分数据,或者是改变原字符的位置等编程方法;进制转换就是将原数据转换成另一种进制的数据;字符串字符转换就是把一个字符转换成另一个字符或者是把一组字符转换成另一组字符,每个字符的转换遵循一定的编程规则;替代部分字符就是把部分字符替代成另一种形式的字符,替代后的字符与没有替代的字符存在相同的部分字符,以及替代插入点使用逻辑判断,这些合成方法可以有先后顺序的不同,前提是方便设计即可,
终端合成密码的合成方式:其基本特征就是由银行卡的动态数据提供数据表连接路径变量或指定部分数据的位置等;银联终端设备等存贮一定数量的数据表,它们在同一数据库下(在编程时,一般都是先连接数据库,再连接数据表),数据表名称形式AB,如果A相同而B不相同(A为数据表主名称,B为序号,一般是阿拉伯数字),就表示它们为同一类型数据表,数据结构包括字段和数据类型都相同,只有数据不同,举例sql语句select*fromchinese_FourCodeB表示链接到某个数据表,chinese_FourCode就是数据表名称形式的A,B就是银行卡提供的动态数据连接路径变量,某张银行卡对应的此数据B为7,就是通过编程语句指定链接到表名为chinese_FourCode7的数据表,为了安全,连接数据可以分为公有数据表连接路径变量与私有数据表连接路径变量数据,指定数据连接位置是通过银行卡提供的几组数据,这几组数据与终端设备程序的复杂字符串的ID号按照一定的编程规则连接,而另外一些表是私有连接;这里的动态数据就是可读写数据(RW数据),可以通过改写它们修改密码,背面密码只能由持卡人在柜员机完成初始化,程序设计完成后,所有的数据表及数据以及合成规则在所有的同一类型的实体终端是完全一样的,这样,在每一台同一类型的实体终端上,都会获得完全一致的密码数据,也就是说这种密码设计同样遵循所有的同一类型的实体终端密码算法一致这个基本原理,而网银与手机银行的初始化工作在申请人在柜台申请开卡之后就可以进行,它们并没有先后顺序,持卡人申请开通相应的服务即可,网银的存贮模块与磁条的非常相似,手机银行程序没有数据表连接路径变量B这个选项,是直接利用对应的数据表加密,也就是相应的数据表程序中只有一个,合成之后,把扫描到的二维码等智能手机能够识别的数据和加密后的数据进行加密即可,发送数据时,为了安全,可以利用电话卡的后台锁定技术等辅助锁定交易者的身份。
3.依据权利要求1所述的终端合成密码,其相应的数据表以及部分数据的实例及连接,其特征是:
下面介绍终端合成密码需要的专用术语及其定义以及数据表示例设计:
A:进制转换,这里采用阿拉伯数字与英文大小写字母,也就是62进制转换,这种数制可以和10进制数据或2进制数据等完成互换,本发明利用数字与大小写字母表示这种数制,它们是指定利用阿拉伯数字0到9,大写字母A到Z,小写字母a到z表示0到61的数制算法,也可以有其他的指定方案,后面部分讲述的数字或字母的本位码,转码算法等也遵循同样的规律,本发明中,密码加载码表示区段为十进位00000(0)到99999,相应的62进制为000(0)到q0T(只表示0与正整数,不表示负数,浮点运算等),也就是说,将十进制的五位数变成了三位数字与字母组合数;
B:数字与字母的转换算法,用一个数字或字母获得另一个数字或字母或者是用一组数字或字母获得另一组数字或字母的转换算法,转换算法遵循以下规律
Figure FSA0000097808300000021
不同的源码相同的算法转换之后结果是不能相同的;
Figure FSA0000097808300000022
同一源码的几种算法的转换结果互相也不能相同;
Figure FSA0000097808300000023
转码的结果也不能与源码相同;
Figure FSA0000097808300000024
转码要设置几种转码算法,以强化密码的组合复杂性,
示例是设置四种,即A,B,C,D算法,它是以数字和字母的本位码为基础条件进行转换的,
数字的本位码:数字0到9的本位码分别是数字0到9;
小写字母的本位码:字母a到z的本位码分别是数字10到35;
大写字母的本位码:字母A到Z的本位码分别是数字36到61;
这里例举的ABCD算法,其中A算法,B算法,C算法是以本位码为基础进行的数学运算,但是D算法经过人工调整,没有什么算法规律,
A算法:数字或字母的本位码加该本位码后的第2位奇数就是此数字或字母的A码转码算法,结果≥62的,就减62,记载其本位码对应的数字或字母,转码记为A;
B算法:数字或字母的本位码加该本位码后第13位奇数就是此数字或字母的B码转码算法,结果≥62的,就减62,记载其本位码对应的数字或字母,转码记为B;
C算法:数字或字母的本位码加30就是该数字或字母的C码转码算法,结果≥62的,就减62,记载其本位码对应的数字或字母,转码记为C;
D算法:D算法基本遵循数字或字母的本位码加该本位码后的第3个偶数就是该数字或字母的D码转码算法,结果≥62的,就减62,为了防止数据相同性冲突,做了部分位置调整,记载其本位码对应的数字或字母,转码记为D,见表B:
表B:数字与字母的ABCD算法转码对照表
源码 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k A 3 6 7 a b e f i j m n q r u v y z C D G H B p s t w x A B E F l J M N Q R U V Y Z 2 3
C u v w x y z A B C D E F G H l J K L M N O D 6 7 a b e f i j m n q r u v y z C D G H K 源码 l m n o p q r s t u v w x y z A B C D E F A K L O P S T W X 0 1 4 5 8 9 c d g h k l o B 6 7 a b e f i j m n q r u v y z C D G H K C P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 D L O P T W S X 0 1 4 5 8 9 c d g h k l o p 源码 G H l J K L M N O p Q R S T U V W X Y Z A p s t w x A B E F l J M N Q R U V Y Z 2 B L O P S T W X 0 1 4 5 8 9 c d g h k l o C a b c d e f g h i j k l m n o p q r s t D s t w x A B E l J F M N Q U V R Y Z 2 3
使用说明:例如源码数据为Q,按A算法就是转换成J,B算法就是转换成5,C算法就是转换成k,D算法就是转换成M,只要对照表查询就可以了,其实也可以设计其他的数据表或算法,但是,只是注意设计时这里有三个基本要点,就是不同的源码相同的算法转换之后结果是不能相同的,而同一源码的几种算法的转换结果互相也不能相同,而且转码的结果也不能与源码相同,从它的设计原理我们可以知道,转码前后的每一个数字和字母都不会相同,这是一个最基本的设计要点,调用时,A算法,B算法,C算法都可以直接使用数据表调用,也可以使用数学运算换算,但是,D算法经过了人工调整,一般只能使用数据表调用,示例中这两张数据表一般是固定的,也就是所有的终端采用的数据都是相同的,表A,表B它们其实也可以设置几张表,使用编程语句完成选择性调用,
①:密码加载码表:原始密码是和一定长度的字符段利用一定的编程规则进行加密的,这种原始密码字符段就是密码加载码,密码加载码和其ID号对照表就是密码加载码表,一般密码加载码需要一定数量的组数,本说明书示例设计密码加载码共10000组,见表1:
表1:密码加载码表(仅仅显示部分内容)
ID 密码加载码 ID 密码加载码 1 69135,78450,13269,87563,57 3 67520,10036,98855,22216,42 2 19876,23400,19888,57829,36 10000 99856,22367,85430,01091,56
使用说明:终端合成密码要调用这些数据中的几组数据参与密码的合成,银行卡开卡时,系统会生成几组供调用的连接变量数据,目前的银行卡密码是6位,所以是6组0到9999之间的可读写数据为调用的连接变量,由于ID号是自动编号,而一般ID号是从1开始的,银行卡数据与ID号挂钩时,有可能出现0,因为磁卡为了节省空间,允许出现0,手机银行与网上银行的记忆模块容量也不需要很大,解决方法有两种,一种是其他的一一对应,而0则使用IF语句,也就是出现0,就连接ID号为10000的密码加载码数据,还有一种方案就是把所有的原数据加1,比方说磁卡存贮的为353,就连接ID号354的密码加载码数据,这样,系统检索连接变量,把对应的密码加载码引入程序就完成了数据调用,而背面密码调用此数据时可以直接调用,也可以先进行一定的规则编程,这里例举一种方法与用户密码数据进行掺和防破解,就是把用户密码的6组原始密码数据转换成10进制数据,分别除以一个特定的数,比方说11,把余数加1,就从这一位开始截取背面密码的原始数据,截取四位,这样获得6组四位数字的代码,如果没有用户密码的这6组数字,就用背面密码的6组数字除以一个数,比方说11,其他操作则是一样,把这6组数字和银行卡对应的6组连接数分别相加,是每一位分别相加,结果≥10的,就减10,用6组新数据完成密码加载码的调用工作,虽然银行卡记载的密码加载码的调用的连接变量只有6组,我们还是可以使用多种方法获得新的6组数,这样密码更加复杂,假如某银行卡提供的对应的数据为3,按第一种方法就是调用为67520,10036,98855,22216,42到程序,按第二种方法就是调用99856,22367,85430,01091,56到程序,其他的也是一样的方法,密码加载码表是本设计中一个最重要的表,它的设计质量直接影响到密码的复杂程度,密码加载码为22位随机数字,这个22位是依据说明书描述需要和易于理解人为规定的,可以依据编程需要设定,示例由截码函数substring的参数来决定,start值确定起始位置,length确定长度,假如start值为15,length值为10,22位就不够,假如start值为11,22位后面的两位就只会占据数据库空间,永远无法使用,这里要注意程序设计随机字符串时应保证不出现连续11个或以上相同数字或两个数字重叠(就是相同数字最高只允许出现截取后的字符段长度,这样才不会出现密码不同,截取的字符段却相同这种情况),一些比较特殊的组合比方说7个8等也要尽量避免,在设计数据库时这是可以人为控制的,再就是组合数,这里建议10000组,也就是ID号从1到10000,数据太庞大,手机应用有困难,数据太少,密码安全性不够好,采用10000位,银行卡就是四位数字0到9999,6组数据为24位数字共24字节,在安全性与空间方面有一个适度的平衡,据此,银行卡的密码组合在这里就拓展到亿亿亿次位,即10的24次方;
②:转码表:待转码的每个字符作为源码,经过一定的规则转换成另外一个字符,确定转码方向的规则和转码引导值(也就是编号)对照表就是转码表,它的特征如下:
Figure FSA0000097808300000041
转码规则位数由源码位数确定;
转码的项数由转码算法确定;
Figure FSA0000097808300000043
转码引导值MAX值由源码位数和转码算法确定,具体是转码算法的源码位数的次方,转码算法为N种,源码位数为M,则转码引导值MAX值为NM
Figure FSA0000097808300000044
转码引导值由源码获取,将源码转换成10进制数据,将10进制数据除以NM,余数加1为几,就查找该数字编号对应的转码规则进行转码,
示例是四种算法即A码,B码,C码与D码转码算法,转码控制值由源码位数和转码算法确定,本说明书是64(4*4*4)项,见表2;
表2:转码表(仅仅显示部分内容)
编号 转码 编号 转码 编号 转码 编号 转码 编号 转码 编号 转码 0 AAA 5 ABB 10 ACC 15 ADD 20 BBA 25 BCB 1 AAB 6 ABC 11 ACD 16 BAA 21 BBB 26 BCC 2 AAC 7 ABC 12 ADA 17 BAB 22 BBC 32 BCD 3 AAD 8 ACA 13 ADB 18 BAC 23 BBD 28 BDA 4 ABA 9 ACB 14 ADC 19 BAD 24 BCA 29 BDB
使用说明:原始数据经过截码后,会变成00000到99999之间的数字,用户密码和背面密码都有6组,截码后分两种情况,一种是一组又分成两个00000到99999之间的数据(含00000到99999),一种只有一个00000到99999之间的数据(含00000到99999),只有一个的是自转码,也就是自身的十进制数据除以64,余数为几,就以该编号对应的转码规则进行转码,例举“69853”,69853除以64,余数为29,查表2为BDB,将69853转换成62进制数据,为18,10,41,查表A为iaF,就是将i转码为B码,a转码为D码,F转码为B码,查表B就是ZqK,而两个数据甲和乙就是将它们的10进制数据分别除以64,甲的余数为几,就从该编号对应的转码规则转码乙,而乙则转码甲,也就是互相控制进行转码,例举“1366498713”,先五个一分为13664和98713,二者分另除以64,其余数分别是32和25,其62进制数据分别是3yo,pG9,就是用编号25对应的转码规则BCB转码3yo为w2b,编号32对应的转码规则BCD转码pG9为ear,在实际设计过程中,同一个表的编号与转码是一一对应关系的,但是不同的表允许部分数据相同,比方两张表编号25同为BCB等,
③:密码排列控制表,经过转码加密后的密码的排列次序是与原始密码的排列次序是一致的,合成过程中改变密码排列次序的表就是密码排列控制表,密码排列控制表的待排列部分不一定与原始密码的部分数相同,可以利用一定的编程方法将密码分成几部分后进行重排,密码排列控制表由控制值和排列次序两部分组成,控制值由分成的部分数决定,也就是计算过程中不允许出现空连接,
本说明书仅仅是一种示例排列法,见表3,
表3:密码排列控制表(仅仅显示部分内容)
编号 次序 编号 次序 编号 次序 编号 次序 编号 次序 编号 次序 0 423156 5 123645 10 124563 15 125346 20 126435 209 612354 1 123465 6 124356 11 124536 16 125436 21 126453 210 612435 2 123546 7 124365 12 125643 17 125463 22 126354 211 612453 3 123564 8 124653 13 125634 18 126543 23 126345 212 612543 4 123654 9 124635 14 125364 19 126534 24 612345 213 534612
密码排列控制表由控制值和排列次序两部分组成,控制值为0到718(这种排列有720种,即6*5*4*3*2=720,将123456这种排列次序不用),而排列次序值就是数字1到6的随机排列,一个数字只允许出现一次,这个1到6就是表示原始次序,示例原始用户密码235691,假如第4位为预警密码,就将第4位剔除,控制原始值由密码分成的重排部分确定,本说明书中密码是分成6部分进行重排,只能是1到6,假如是1,就是用户密码或背面密码第1组的第一个经过转码后的62进制数据,转换成10进制数据,除以719,余数为几,就查找编号对应的次序,进行重排即可,
④:字符替代码表,将密码的一部分字符用其他的字符进行取代的一种加密方法就是字符替代,这个表的基本特征是:
Figure FSA0000097808300000051
字符和编号是互相唯一对应的关系;
Figure FSA0000097808300000052
字符替代码表所有的表采用的所有字符都是相同的,不同的表只是字符与编号不同;
Figure FSA0000097808300000053
取代后的字符与没有替代的字符最好有相同的字符类型;
Figure FSA0000097808300000054
一般被替换的字符是同一类型的字符,比方说要替换数字,那么就替换全部的数字,而换上去的可以有不同类型的字符;
Figure FSA0000097808300000055
被替换的字符应一次替换几个,而插入字符的位置,利用逻辑语句进行判断,这会加大破解难度;
Figure FSA0000097808300000056
从理论上看,可以利用任何一种字符替代另外一种字符,但是,应该考虑替代后密码数据字节数和其他因素,要利于编程设计和实际需要,
字符替代码表最好采用10000个字符,要替代二级英文字符,密码的安全性才比较高,用三位数字编号不够数,如果是五位,又很难有那么多的字符表示,软件设计工程量也偏大了,见表4,
表4:字符替代码表(仅仅显示部分内容)
编号 替代码 编号 替代码 编号 替代码 编号 替代码 编号 替代码 编号 替代码 0000 0005 0010 0015 0020 0025 0001 0006 0011 0016 0021 0026 0002 0007 0012 0017 0022 0027 0003 0008 0013 0018 0023 0028 0004 0009 Ag 0014 0019 C 0024 0029
使用方法:密码数据处理的结果是数字与英文大小写字母的组合,最后一步密码处理程序就是利用字符替代码表进行处理,英文大小写字母不予改变,将其中的数字提取出来,把提取的数字采用一定的规律例如按先后顺序四个数字一组,最后一组不足四位时,取0补足,例如23就是0023,查找对应的字符替代码,直接替换,例如四个数字为“0013”,就存贮“不”,四个数字为“0009”,就存贮“Ag”,四个数字为“0019”,就存贮“C”,当替代之后,插入的地方则采用类似IF这样的逻辑语句确定,这里例举一种方法,就是利用取余函数MOD,将四个数字除以4,余数为0,就插入原第1个数字的位置,余数为1,就插入原第2个数字的位置,余数为2,就插入原第3个数字的位置,余数为3,就插入原第4个数字的位置,替代完成后,将空格清除,就获得了新密码,字符替代码表规定所有的字符都是相同的是为了防止服务器端破解。
4.依据权利要求1所述的终端合成密码的合成过程,其特征是:
A:引进密码加载码:利用密码加载码的6组连接变量或通过计算获得的连接变量,通过查找对应的ID号或编程之后对应的ID号,将其对应的密码加载码引入程序,下面的步骤中,通过银行卡的连接路径变量连接相应的数据表就不再一一说明;
B:获取start值:将用户密码和背面密码的6组10进制数据除以一个合适的数(例举是13),把余数加1,分别获得1到13的6组数,用户密码没有其原始的只读数据的,就是我们输入的6位密码分拆后,分别加1,获得1到10的6组数,这些数据就是第三步中的start值的来源;
C:截取字符串:在函数substring(expression,start,length)中,expression就是表示密码加载码,start的值就是第2步获得的结果,length可以统一规定,也可以通过编程方法确定,(例举是1至5组设定为10,第6组设定为5),以密码加载码为9985622367854300109156说明,假如现在start值为11,为substring(9985622367854300109156,11,10),上述函数意思就是把9985622367854300109156进行截取字符串,从第11位处开始截取,截取长度10位,9985622367(8543001091)56,就是获得括号中的十位数,采用相同或类似的方法,完成截取字符串或者是通过left,right等函数改变字符位置等的工作;
D:进制转换,将十进制数据转换成三位62进制数据,不足3位的,用0补足;
E:转码:将所有的数据按照转码规则进行转码,为了强化防破解效果,这里建议多转码几次;
F:重新排序:将预警密码单独列出,其他的用户密码和背面密码进行重新排序;
G:数据效验:重新排序后,背面密码的33位数字与字母组合,依旧按照6位一分,最后为3位划分成6组,分别是1到6组,而用户密码有可能是27位,也可能是30位,划分位置时,要留下预警密码的位置,也就是预警密码的原位置不能改变,并且把预警密码插进来,这样划分出6组,它们都是将用户密码与预警密码的62进制数据和所有的组数中的第一个三位数据分别相加,是每一个字母或数字的本位码相加,结果≥62的,就减62,记载相应的本位码,用户密码没有相应数据的,就是把输入的密码分拆后,分别相加,完成这一步后,把预警密码提取出来,
H:替代字符:把它们利用字符替代码进行处理,获得最终的终端合成密码,
网上银行与磁卡的终端合成密码程序是一样的,而手机银行考虑程序的占用空间问题,不建议使用数据表连接路径变量,而是直接选择数据表,将合成后的结果再利用扫描的二维码数据或其他智能手机可以识别的符号进行加密,手机银行的程序有多个数据表数据存在差别的版本号选择,这点与网上银行有区别,持卡人下载程序时要记住版本号,否则,手机刷机后会导致手机银行无法使用,版本号设置只是版本号后面的部分有区别,方便持卡人记忆,,上述合成过程的先后顺序可以依据实际编程作适当的调整。
CN201310585526.6A 2013-05-01 2013-05-01 终端合成密码 Pending CN103679935A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310585526.6A CN103679935A (zh) 2013-05-01 2013-05-01 终端合成密码

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310585526.6A CN103679935A (zh) 2013-05-01 2013-05-01 终端合成密码

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201310174989.3A Division CN103714626B (zh) 2013-05-01 2013-05-01 多密码预警式可异卡控制银行卡

Publications (1)

Publication Number Publication Date
CN103679935A true CN103679935A (zh) 2014-03-26

Family

ID=50317365

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310585526.6A Pending CN103679935A (zh) 2013-05-01 2013-05-01 终端合成密码

Country Status (1)

Country Link
CN (1) CN103679935A (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104408363A (zh) * 2014-12-25 2015-03-11 绵阳艾佳科技有限公司 安全密码系统
CN105357210A (zh) * 2015-11-23 2016-02-24 贾如银 动态密码
CN105959114A (zh) * 2016-07-12 2016-09-21 安恒世通(北京)网络科技有限公司 一种公寓楼用整体通道动态密码生成方法
CN105989309A (zh) * 2015-02-17 2016-10-05 汪风珍 一种密码
CN106161006A (zh) * 2015-04-06 2016-11-23 汪风珍 一种数字加密算法
CN106411523A (zh) * 2016-08-24 2017-02-15 中国银行股份有限公司 银行卡密码的生成方法、校验方法、设备以及系统
CN107305660A (zh) * 2016-04-24 2017-10-31 汪风珍 一种手机金融交易方法及手机双置银行卡
CN108809779A (zh) * 2018-06-19 2018-11-13 北京上中元科技有限公司 一种新风净化设备自动识别/验证的方法
CN110046484A (zh) * 2019-04-29 2019-07-23 中核武汉核电运行技术股份有限公司 一种工业控制系统信息安全控制方法及装置
CN112636911A (zh) * 2021-01-05 2021-04-09 杜瑞峰 一种非联网设备接龙取值变函数序列密码生成方式

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1028401A2 (en) * 1999-02-12 2000-08-16 Citibank, N.A. Method and system for performing a bankcard transaction
JP2003108903A (ja) * 2001-09-27 2003-04-11 Le Tekku:Kk セキュリティの高い磁気カード決済システム
CN1523809A (zh) * 2003-09-08 2004-08-25 赵忠华 可变密码身份验证技术
CN101561714A (zh) * 2009-06-01 2009-10-21 臧永学 组群式密码输入法
CN101604366A (zh) * 2009-07-13 2009-12-16 中山爱科数字科技有限公司 一种密码分割式动态验证方法和系统
CN102881079A (zh) * 2012-08-28 2013-01-16 汪风珍 脚踩多密码预警式可异卡控制银行卡

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1028401A2 (en) * 1999-02-12 2000-08-16 Citibank, N.A. Method and system for performing a bankcard transaction
JP2003108903A (ja) * 2001-09-27 2003-04-11 Le Tekku:Kk セキュリティの高い磁気カード決済システム
CN1523809A (zh) * 2003-09-08 2004-08-25 赵忠华 可变密码身份验证技术
CN101561714A (zh) * 2009-06-01 2009-10-21 臧永学 组群式密码输入法
CN101604366A (zh) * 2009-07-13 2009-12-16 中山爱科数字科技有限公司 一种密码分割式动态验证方法和系统
CN102881079A (zh) * 2012-08-28 2013-01-16 汪风珍 脚踩多密码预警式可异卡控制银行卡

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104408363A (zh) * 2014-12-25 2015-03-11 绵阳艾佳科技有限公司 安全密码系统
CN105989309A (zh) * 2015-02-17 2016-10-05 汪风珍 一种密码
CN106161006A (zh) * 2015-04-06 2016-11-23 汪风珍 一种数字加密算法
CN106161006B8 (zh) * 2015-04-06 2022-07-08 杨艺 一种数字加密算法
CN106161006B (zh) * 2015-04-06 2020-11-17 汪风珍 一种数字加密算法
CN105357210A (zh) * 2015-11-23 2016-02-24 贾如银 动态密码
CN105357210B (zh) * 2015-11-23 2018-04-13 贾如银 动态密码的生成方法
CN107305660A (zh) * 2016-04-24 2017-10-31 汪风珍 一种手机金融交易方法及手机双置银行卡
CN107305660B (zh) * 2016-04-24 2021-02-02 张家界航空工业职业技术学院 一种手机金融交易方法及手机双置银行卡
CN105959114A (zh) * 2016-07-12 2016-09-21 安恒世通(北京)网络科技有限公司 一种公寓楼用整体通道动态密码生成方法
CN106411523B (zh) * 2016-08-24 2021-06-04 中国银行股份有限公司 银行卡密码的生成方法、校验方法、设备以及系统
CN106411523A (zh) * 2016-08-24 2017-02-15 中国银行股份有限公司 银行卡密码的生成方法、校验方法、设备以及系统
CN108809779A (zh) * 2018-06-19 2018-11-13 北京上中元科技有限公司 一种新风净化设备自动识别/验证的方法
CN110046484A (zh) * 2019-04-29 2019-07-23 中核武汉核电运行技术股份有限公司 一种工业控制系统信息安全控制方法及装置
CN112636911A (zh) * 2021-01-05 2021-04-09 杜瑞峰 一种非联网设备接龙取值变函数序列密码生成方式
CN112636911B (zh) * 2021-01-05 2022-10-04 杜瑞峰 一种非联网设备接龙取值变函数序列密码生成方式

Similar Documents

Publication Publication Date Title
CN103679935A (zh) 终端合成密码
US20220358491A1 (en) Implementing logic gate functionality using a blockchain
US20200169546A1 (en) Systems, methods, and apparatuses for seeding community sidechains with consent written onto a blockchain interfaced with a cloud based computing environment
CN103714626B (zh) 多密码预警式可异卡控制银行卡
CN106161006B (zh) 一种数字加密算法
US10102366B2 (en) Fraud resistant passcode entry system
CN1079968C (zh) 包括便携式数据处理单元的数据交换系统
US20190238316A1 (en) Systems, methods, and apparatuses for implementing intelligent consensus, smart consensus, and weighted consensus models for distributed ledger technologies in a cloud based computing environment
US20190236562A1 (en) Systems, methods, and apparatuses for implementing document interface and collaboration using quipchain in a cloud based computing environment
TW201901546A (zh) 去信任確定性狀態機之電腦實施方法
CN110135986A (zh) 一种基于区块链智能合约实现的可搜索加密文件数据方法
CN106610995B (zh) 一种创建密文索引的方法、装置及系统
CN102638447A (zh) 基于用户自主产生的口令对系统登录的方法和装置
US20210056542A1 (en) System and method for optimizing cryptocurrency transactions
CN105426727B (zh) 指纹解密方法及移动终端
CN102238135A (zh) 安全认证服务器
CN105989309A (zh) 一种密码
CN105654371B (zh) 一种金融ic卡多应用授权发卡系统
KR100910303B1 (ko) 가변코드 테이블을 이용한 데이터 암복호화 장치 및 그 방법
CN101471890B (zh) 一种实现网络信息匹配的方法和系统
CN110909212A (zh) 一种银行标识代码的匹配方法和设备
JP4322355B2 (ja) 電子認証装置
CN103295053A (zh) 多密码预警式内存锁银行卡
US11275869B2 (en) Credit card and operating method therefor
CN105956644A (zh) 一种可穿戴设备的编码、数据同步方法、装置及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20140326