身份证号码加密方法、解密方法、加密系统及解密系统与流程

文档序号:25807900发布日期:2021-07-09 13:11阅读:3554来源:国知局

1.本发明属于信息安全技术领域,尤其涉及身份证号码加密方法、解密方法、加密系统及解密系统。


背景技术:

2.随着互联网的发展,每天都有各种各样的敏感数据在网络上传播。有大量第三方机构对这些敏感数据进行收集、分析、挖掘,大数据分析可为更优化的决策提供更加可靠的支持,但不对明文信息采取加密或匿名处理就很有可能导致用户的信息滥用,甚至发生严重的隐私泄露事件,造成无法弥补的损失。传统的加密技术能够使得加密后的数据是可证安全的,然而其密文却失去了原有数据的格式,因为绝大部分数据具有特定的格式,比如身份证号等敏感数据,使用传统的分组密码算法直接进行加密可能会导致数据长度的扩展,使得数据的类型发生变化等,需要修改数据库或应用程序来适应这些变化,成本非常高。
3.为解决身份证号码加密的问题,王鹏提出过基于保留格式加密的方案(参见:[王鹏. 多类型数据保留格式加密技术的研究与实现[d]. 北京邮电大学, 2017.),该方案根据gb 11643

1999 《公民身份号码》的编码规则,将身份证号码仔细地划分为很多个小块,包括地区码、出生日期、顺序码等,然后基于保留格式加密算法进行加密。保留格式加密(format

preserving encryption,简称fpe)通过对分段的原始数据进行掩码转换,输出一个与各分段原始数据的格式、关联等均一模一样的数据。近年来,美国国家标准与技术研究院(national institute of standards and technology,nist)发布了nist sp 800

38g文档,提出了fpe算法ff1、ff3

1等。
[0004]
传统实现的这种身份证号码加密方案存在如下不足:(1)过于复杂。将身份证号码仔细地划分为很多个小块,包括地区码、出生日期、顺序码等,然后基于保留格式加密算法分别进行加密;(2)安全性不足。fpe算法为保证安全,通常要求,其中len为待加密消息的长度,而传统的这一划分方式显然不满足这一安全性前提假设,比如对顺序码而言,是长度仅3位的数字,,不满足大于106的安全性前提,整个解决方案存在安全隐患。
[0005]
(3)数据库对存放的身份证号码不会严格检查地区码、出生日期、顺序码,通常仅检查身份证号码是否为数字,最末一位是否为数字或“x”,有的会进行校验码的检测。因此传统的这一加密方案存在过度设计的不足。
[0006]
(4)过度的设计和多次执行保留格式加密导致加密效率的降低。


技术实现要素:

[0007]
本发明的目的在于,为克服现有技术缺陷,提供了一种身份证号码加密方法、解密方法、加密系统及解密系统,本发明解决了普通加密后的身份证号码格式不对的问题,满足
了数据库存储的要求,方案简洁高效的同时还满足了安全性的要求,加解密流程相同降低了实现加解密时的资源占用。
[0008]
本发明目的通过下述技术方案来实现:本发明涉及的数据分为如下四种类型字符型和字符串:定义由个字符组成的字符表为,称字符表中字符个数为字符表的基数。字符串为字符表中有限个字符组成的字符序列,也称为字符串。记为由字符表中字符组成的长度为n的字符串的集合。明文和密文是由字符表中的多个字符组成的字符串。列如,最常见的数字字符表为,明文和密文在集合中。常见的基数取值除了之前提到的10之外有2、26、95等,这些分别对应比特、字母(仅大写字母或仅小写字母)、可打印ascii字符(空格被视为可打印字符)的字符表。
[0009]
字节和字节串:本发明提及的字节为通常意义上的字节,即为8个0、1比特组成的字节。字节串为有限个字节组成的字节序列。
[0010]
整数:即普通的整数。
[0011]
本发明涉及的主要的数据类型转换如下所述。
[0012]
字符串转整数:任意给定一个定义在基数为的字符集上的字符串x,记将字符串转为整数的函数为,其具体含义是将按大端表示法表示的字符串x,转化为一个普通的非负整数x,即。
[0013]
本发明涉及的主要数据如下。
[0014]
明文:明文是由字符表中的多个字母组成的字符串。比如由11个数字构成的电话号码。
[0015]
密文:明文是由字符表中的多个字母组成的字符串。比如由18个数字构成的字符串。
[0016]
调节因子:调节因子是多个字节构成的字节串,fpe方案中的密文空间比较小,使用不同的调节因子可使得同一密钥对同一明文加密得到不同的密文值,从而增加密文的多变性。
[0017]
密钥:秘密信息,字节串。
[0018]
本发明涉及的记号、缩写与符号如下。
[0019]
:由radix个字符组成的字符表。
[0020]
radix:字符表的基数。
[0021]
:由字符表中字符组成的长度为n的字符串的集合。
[0022]
:radix字符串转整数的函数。
[0023]
:赋值,将b的值给a。
[0024]
:串联,将a和b按a在左端、b在右端的顺序串联在一起。
[0025]
:对字符串/字节串x,取其第i个字符/字节。
[0026]
:对字符串/字节串x,取其第i至j个字符/字节,形成新的子串。
[0027]
:保留格式加密算法。
[0028]
:保留格式解密算法。
[0029]
:计算身份证号码的校验码。
[0030]
身份证号码加密方法,包括:s11:输入密钥、调节因子和待加密身份证号码;s12:将身份证号码拆分为数字串a和字符b;s13:对数字串a加入调节因子和密钥,进行保留格式加密,得到数字串c;s14:通过拼接获得完整的身份证号码密文idc。
[0031]
进一步的,保留格式加密为基于对称密码算法的保留格式加密。
[0032]
进一步的,拼接具体为:将数字串c与字符b串联;或计算数字串c的校验码r1,将数字串c与校验码r1串联。
[0033]
进一步的,校验码r1生成算法如下:将数字串c转换为整数;计算校验整数r1;将校验整数r1转为中字符,若校验整数r1为0至9的整数,则将字符r1设定为对应的数字0至9,若校验整数r1为10,则将字符r1设定为x,其中为由radix个字符组成的字符表。
[0034]
另一方面,本发明还提供了身份证号码解密方法,包括:
s21:输入密钥、调节因子和身份证号码密文idc;s22:将待解密的身份证号码密码idc拆分为前17位数字串a和最后一位字符b;s23:对数字串a执行保留格式解密,得到解密后的数字串c;s24:通过拼接获得完整的身份证号码明文idp。
[0035]
进一步的,保留格式解密为基于对称密码算法的保留格式解密。
[0036]
进一步的,拼接具体为:将数字串c与字符b串联;或计算数字串c的校验码r2,将数字串c与校验码r2串联。
[0037]
进一步的,校验码r2生成算法如下:将数字串c转换为整数;计算校验整数r2;将校验整数r2转为中字符,若校验整数r2为0至9的整数,则将字符r2设定为对应的数字0至9,若校验整数r2为10,则将字符r2设定为x,其中为由radix个字符组成的字符表。
[0038]
另一方面,本发明还提供了身份证号码加密系统,包括身份证号码拆分模块、保留格式加密模块和密文组装模块;其中,身份证号码拆分模块,将输入的身份证号码拆分为数字串a和字符b,并将拆分后的待加密字符串输入至保留格式加密模块;保留格式加密模块,对待加密字符串执行保留格式加密;密文组装模块,拼接加密后的字符串和字符b获得完整的身份证号码密文idc。
[0039]
另一方面,本发明还提供了身份证号码解密系统,包括密文拆分模块、保留格式解密模块和身份证号码组装模块;其中,密文拆分模块,将输入的密文拆分为数字串和最后一位字符,并将拆分后的密文传输至保留格式解密模块;保留格式解密模块,对待解密字符串执行保留格式解密;身份证号码组装模块,拼接解密后的数字串和字符获得完整的身份证号码明文idp。
[0040]
本发明的有益效果在于:(1)解决了普通加密后的身份证号码格式不对的问题,满足了数据库存储的要求。
[0041]
(2)本发明对身份证号的前17位整体执行保留格式加密得到17位数字,仅最后一位计算校验码,不再像传统方案一样划分为很多个复杂的小块,使得本方案简洁明了。
[0042]
(3)加解密流程相同,结构相似,降低了实现时的资源占用。
[0043]
(4)根据fpe算法的通常要求,对本发明内容而言,满足fpe算法的安全性使用要求。
[0044]
(5)传统方案需分别对地区码、出生日期码、顺序码分别加密,共执行3次保留格式加密,本发明仅需1次保留格式加密,因此更加高效。
附图说明
[0045]
图1是本发明实施例1提供的身份证号码加密方法流程框图;图2是本发明实施例2提供的身份证号码加密方法流程框图;图3是本发明实施例3提供的身份证号码解密方法流程框图;图4是本发明实施例4提供的身份证号码解密方法流程框图;图5是本发明实施例5提供的身份证号码加密系统结构框图;图6是本发明实施例6提供的身份证号码解密系统结构框图。
具体实施方式
[0046]
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
[0047]
需要说明的是,为使本发明实施例的目的、技术方案和优点更加清楚,下面对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
[0048]
因此,以下对本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0049]
本发明涉及的数据分为如下四种类型字符型和字符串:定义由个字符组成的字符表为,称字符表中字符个数为字符表的基数。字符串为字符表中有限个字符组成的字符序列,也称为字符串。记为由字符表中字符组成的长度为n的字符串的集合。明文和密文是由字符表中的多个字符组成的字符串。列如,最常见的数字字符表为,明文和密文在集合中。常见的基数取值除了之前提到的10之外有2、26、95等,这些分别对应比特、字母(仅大写字母或仅小写字母)、可打印ascii字符(空格被视为可打印字符)的字符表。
[0050]
字节和字节串:本发明提及的字节为通常意义上的字节,即为8个0、1比特组成的字节。字节串为有限个字节组成的字节序列。
[0051]
整数:即普通的整数。
[0052]
本发明涉及的主要的数据类型转换如下所述。
[0053]
字符串转整数:任意给定一个定义在基数为的字符集上的
字符串x,记将字符串转为整数的函数为,其具体含义是将按大端表示法表示的字符串x,转化为一个普通的非负整数x,即。
[0054]
本发明涉及的主要数据如下。
[0055]
明文:明文是由字符表中的多个字母组成的字符串。比如由11个数字构成的电话号码。
[0056]
密文:明文是由字符表中的多个字母组成的字符串。比如由18个数字构成的字符串。
[0057]
调节因子:调节因子是多个字节构成的字节串,fpe方案中的密文空间比较小,使用不同的调节因子可使得同一密钥对同一明文加密得到不同的密文值,从而增加密文的多变性。
[0058]
密钥:秘密信息,字节串。
[0059]
本发明涉及的记号、缩写与符号如下。
[0060]
:由radix个字符组成的字符表。
[0061]
radix:字符表的基数。
[0062]
:由字符表中字符组成的长度为n的字符串的集合。
[0063]
:radix字符串转整数的函数。
[0064]
:赋值,将b的值给a。
[0065]
:串联,将a和b按a在左端、b在右端的顺序串联在一起。
[0066]
:对字符串/字节串x,取其第i个字符/字节。
[0067]
:对字符串/字节串x,取其第i至j个字符/字节,形成新的子串。
[0068]
:保留格式加密算法。
[0069]
:保留格式解密算法。
[0070]
:计算身份证号码的校验码。
[0071]
实施例1如附图1所示是本实施例提供的身份证号码加密方法流程框图,该方法具体包括
以下步骤:步骤1:输入密钥、调节因子和待加密身份证号码。其中,调节因子是多个字节构成的字节串,fpe方案中的密文空间比较小,使用不同的调节因子可使得同一密钥对同一明文加密得到不同的密文值,从而增加密文的多变性。密钥和调节因子是加密和解密的两个参数,参与保留格式加密算法的运算。
[0072]
步骤2:身份证号码拆分。待加密身份证号码idp拆分为前17位数字串a和最后一位字符b,即,。
[0073]
步骤3:对前17位数字串执行保留格式加密。对字符串a执行保留格式加密,得到加密后的17位数字串c,a和c是基数raidx为10,字符表为的数字组成的数字串,即。保留格式加密为基于对称密码算法的保留格式加密。
[0074]
步骤4a:将步骤3计算得到的17位密文数字串与步骤1得到的1位数字串b串联,即,并输出密文idc。
[0075]
本实施例提供的身份证号码加密方法,解决了普通加密后的身份证号码格式不对的问题,满足了数据库存储的要求,方案简洁高效的同时还满足了安全性的要求,加解密流程相同降低了实现加解密时的资源占用。本实施例最后的身份证号码拼接方式简单,没有对校验码进行计算,可用于不对身份证号码验证末尾校验码的应用场景。
[0076]
实施例2如附图2所示是本实施例提供的身份证号码加密方法流程框图,该方法与实施例1提供的身份证号码加密方法相同步骤不再进行赘述,与实施例1提供的身份证号码加密方法不同之处在于:步骤4b.1:计算校验码:计算1位数字串的校验码,。
[0077]
步骤4b.2 :将步骤3计算得到的17位密文数字串c与校验码x串联,即,并输出密文idc。
[0078]
其中,校验码计算方法如下:将数字串c分别转为对应的整数,;按gb 11643

1999 《公民身份号码》中校验码的计算方式计算校验整数r,即将校验整数r转为中字符,即若校验整数r为0至9的整数,则将字符r设定为对应的数字“0”至“9”,若校验整数r为10,则将字符r设定为“x”,然后返回r,该r即为校验码x。
[0079]
本实施例提供的身份证号码加密方法,相比于实施例1,既可应用于对身份证号码
验证末尾校验码的场景,也可用于不对身份证号码验证末尾校验码的应用场景。
[0080]
实施例3如附图3所示,是本实施例提供的身份证号码解密方法流程框图,该方法具体包括以下步骤:步骤1:输入密钥、调节因子和加密后得到的身份证号码密文,长度与身份证号码相等。密钥和调节因子是加密和解密的两个参数,参与保留格式解密算法的运算。
[0081]
步骤2:将待解密身份证号码idc拆分为前17位数字串a和最后一位字符b,即,。
[0082]
步骤3:对前17位数字串执行保留格式解密。对字符串a执行保留格式解密,得到解密后的17位数字串c,a和c是基数raidx为10,字符表为的数字组成的数字串,即。保留格式解密为基于对称密码算法的保留格式解密。
[0083]
步骤4a:将步骤3计算得到的17位明文数字串c与步骤1得到的1位数字串b串联,即,并输出明文idp。
[0084]
本实施例为实施例1提供的身份证号码加密方法所加密的身份证号码提供了对应解密方法。
[0085]
实施例4如附图4所示是本实施例提供的身份证号码解密方法流程框图,该方法与实施例3提供的身份证号码加密方法相同步骤不再进行赘述,与实施例3提供的身份证号码加密方法不同之处在于:步骤4b.1:计算校验码:计算1位数字串的校验码,。
[0086]
4b.2 将步骤2计算得到的17位明文数字串c与校验码x串联,即,并输出明文idp。
[0087]
本实施例为实施例2提供的身份证号码加密方法所加密的身份证号码提供了对应解密方法。
[0088]
实施例5如附图5所示是本实施例提供的身份证号码加密系统结构框图,该系统具体包括身份证号码拆分模块、保留格式加密模块和密文组装模块;其中,身份证号码拆分模块,将输入的身份证号码拆分为数字串a和字符b,并将拆分后的待加密字符串输入至保留格式加密模块;保留格式加密模块,对待加密字符串执行保留格式加密;密文组装模块,拼接加密后的字符串和字符b获得完整的身份证号码密文idc。
[0089]
以上系统和各模块的具体实现过程,以及所达到的有益效果,可以参考前述身份证号码加密方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
[0090]
实施例6如附图6所示是本实施例提供的身份证号码解密系统结构框图,该系统具体包括密文拆分模块、保留格式解密模块和身份证号码组装模块;其中,密文拆分模块,将输入的密文拆分为数字串和最后一位字符,并将拆分后的密文传输至保留格式解密模块;保留格式解密模块,对待解密字符串执行保留格式解密;身份证号码组装模块,拼接解密后的数字串和字符获得完整的身份证号码明文idp。
[0091]
以上系统和各模块的具体实现过程,以及所达到的有益效果,可以参考前述身份证号码解密方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
[0092]
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1