CN113037488B - 基于国密密码杂凑算法的保留格式加密方法及解密方法 - Google Patents

基于国密密码杂凑算法的保留格式加密方法及解密方法 Download PDF

Info

Publication number
CN113037488B
CN113037488B CN202110416963.XA CN202110416963A CN113037488B CN 113037488 B CN113037488 B CN 113037488B CN 202110416963 A CN202110416963 A CN 202110416963A CN 113037488 B CN113037488 B CN 113037488B
Authority
CN
China
Prior art keywords
string
radix
character strings
type
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.)
Active
Application number
CN202110416963.XA
Other languages
English (en)
Other versions
CN113037488A (zh
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.)
Industrial Information Security Sichuan Innovation Center Co ltd
Original Assignee
Industrial Information Security Sichuan Innovation Center Co ltd
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 Industrial Information Security Sichuan Innovation Center Co ltd filed Critical Industrial Information Security Sichuan Innovation Center Co ltd
Priority to CN202110416963.XA priority Critical patent/CN113037488B/zh
Publication of CN113037488A publication Critical patent/CN113037488A/zh
Application granted granted Critical
Publication of CN113037488B publication Critical patent/CN113037488B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC

Abstract

本发明提供一种基于国密密码杂凑算法的保留格式加密方法及解密方法,所述加密方法包括如下步骤:S11,字符串拆分:将输入的待加密明文P字符串拆分为两个子字符串并分别转化为BN型整数;S12,字符串迭代:设置迭代索引号为i=0,1,2,…,9,对步骤S11得到的两个BN型整数进行10轮基于Feistel结构和KDF变换的迭代;所述KDF变换是基于国密密码杂凑算法SM3的密钥导出函数;S13,字符串合并:将迭代得到的两个BN型整数分别转为字符串后合并为一个字符串,得到密文C。本发明的加密方法满足国产化以及安全性要求并且执行效率较高。

Description

基于国密密码杂凑算法的保留格式加密方法及解密方法
技术领域
本发明涉及信息安全技术领域,具体而言,涉及一种基于国密密码杂凑算法的保留格式加密方法及解密方法。
背景技术
随着互联网的发展,每天都有各种各样的敏感数据在网络上传播。有大量第三方机构对这些敏感数据进行收集、分析、挖掘,大数据分析可为更优化的决策提供更加可靠的支持,但不对明文信息采取加密或匿名处理就很有可能导致用户的信息滥用,甚至发生严重的隐私泄露事件,造成无法弥补的损失。传统的加密技术能够使得加密后的数据是可证安全的,然而其密文却失去了原有数据的格式,因为绝大部分数据具有特定的格式,比如银行卡号、身份证号等敏感数据,使用传统的分组密码算法直接进行加密可能会导致数据长度的扩展,使得数据的类型发生变化等,需要修改数据库或应用程序来适应这些变化,成本非常高。怎样在可以对密文数据进行数据分析研究的基础上保护用户隐私不被泄漏成为急需解决的难题。为了解决这类问题,保留格式加密(format-preserving encryption,简称FPE)被提了出来。FPE可以用来进行数据遮蔽,即通过对原始数据进行掩码转换,输出一个与原始数据的格式、关联等均一模一样的数据,从而解决从生产环境的数据向测试环境(或者开发环境)导入时可能产生的数据内容安全问题。
近年来,美国国家标准与技术研究院(National Institute of Standards andTechnology,NIST)就此问题进行了研究,并发布了NIST SP 800-38G文档,提出了FPE算法FF1、FF3-1等。FF1和FF3-1算法都将待加密消息一分为二(分别记为左支数据和右支数据),以AES系列算法为基础,采用10轮Feistel结构执行迭代,最后再将左右两块数据拼接在一起。在每一轮迭代中,右支数据进入轮函数进行基于AES的加密后得到轮函数的输出,然后,左支数据再与此轮函数的输出进行模加后得到更新后的左支数据;最后交换左右两支数据后进入下一轮。如此反复,直至迭代结束。然而NIST提出的这些FPE算法FF1和FF3-1在使用中存在诸多问题难以解决,具体如下:
(1)首先,这些FPE算法的执行效率非常慢,比其普通的加密模块,如ECB、CBC、CTR等,执行效率显著下降;比如目前的PC机执行AES加密16个字节通常不到1个微秒;但FF1和FF3-1的加密时间是这些加密时间的几十倍至上百倍。
(2)其次,《中华人民共和国密码法》的出台并正式实施,各行业大力推进我国商用密码的应用和落地,而NIST提出的这些FPE算法均使用国外的AES系列算法,而非我国商用密码算法,这使得这些FPE算法难以实施。
发明内容
本发明旨在提供一种基于国密密码杂凑算法的保留格式加密方法及解密方法,以解决现有保留格式加密算法不满足国产化要求以及执行效率低下的问题。
本发明提供的一种基于国密密码杂凑算法的保留格式加密方法包括如下步骤:
S11,字符串拆分:将输入的待加密明文P拆分为两个子字符串并分别转化为BN型整数;
S12,字符串迭代:设置迭代索引号为i=0,1,2,…,9,对步骤S11得到的两个BN型整数进行10轮基于Feistel结构和KDF变换的迭代;所述KDF变换是基于国密密码杂凑算法SM3的密钥导出函数;
S13,字符串合并:将迭代得到的两个BN型整数分别转为字符串后串联合并为一个字符串,得到密文C。
进一步的,步骤S11包括如下子步骤:
S111,输入密钥K,长度为t字节的调节因子T,以及待加密明文P;所述待加密明文P是长度为n的字符串,n满足
Figure BDA0003026315730000031
radix满足2≤radix≤65536;
S112,分别取INT型整数
Figure BDA0003026315730000032
v←n-u,
Figure BDA0003026315730000033
Figure BDA0003026315730000034
符号←代表赋值;将待加密明文P拆分为两个字符串A和B:
A←P[1,…,u],B←P[u+1,…,n]
其中,P[1,…,u]表示明文字符串P中的第1至u个字符,P[u+1,…,n]表示明文字符串P中的第u至n个字符;
S113,将这两个字符串A和B分别转为BN型整数α和β:
α←NUMradix(A),β←NUMradix(B)。
进一步的,步骤S12包括如下子步骤:
S121,利用KDF变换计算d字节的掩码字节串E:
E←KDF(d) K(M)
M=[1]1||[2]1||[1]1||[radix]3||[10]1||[u mod 2 56]1||[n]4||[t]4||T||[0](-t-1-b)mod 16||[i]1||[β]b
S122,将d字节的掩码字节串E转为BN型整数γ:
γ←NUM(E)
S123,执行模加运算得到BN型整数δ:
δ←(α+γ)mod radixm
其中,INT型整数m的取值为,如果imod2=0,m←u,否则m←v;
S124,左右互换,即α←β,β←δ;
S125,按迭代次数重复执行步骤S121~S124,迭代完成后得到BN型整数α和β。
进一步的,步骤S121中所述KDF变换的方法包括如下步骤:
S1211,计算
Figure BDA0003026315730000041
d满足0≤d<232,初始R为空串,即字节长度为0;
S1212,对整数i=1,2,...,n,执行:
R←R||SM3(K||M||[i]4)
S1213,截取步骤S1212得到的R最左边的d个字节,得到d个字节的掩码字节串E=R[1..d],然后返回E。
进一步的,步骤S13包括如下子步骤:
S131,将步骤S125得到的BN型整数α和β分别转为字符串A和B:
Figure BDA0003026315730000042
S132,串联字符串A和B,C←A||B,返回密文C。
本发明还提供一种基于国密密码杂凑算法的保留格式解密方法,所述解密方法用于对上述的加密方法得到的密文C进行解密;所述解密方法包括:
S21,字符串拆分:将输入待解密密钥C拆分为两个子字符串并分别转化为BN型整数;
S22,字符串迭代:设置迭代索引号为i=9,8,…,0,对步骤S21得到的两个BN型整数进行10轮基于Feistel结构和KDF变换的迭代;所述KDF变换是基于国密密码杂凑算法SM3的密钥导出函数;
S23,字符串合并:将迭代得到的两个BN型整数分别转为字符串后串联合并为一个字符串,得到明文P。
进一步的,步骤S21包括如下子步骤:
S211,输入密钥K,长度为t字节的调节因子T,以及待解密密文C;所述待解密密文C是长度为n的字符串,n满足
Figure BDA0003026315730000051
radix满足2≤radix≤65536;
S212,分别取INT型整数
Figure BDA0003026315730000052
v←n-u,符号←代表赋值;将待解密密文C拆分为两个字符串A和B:
A←C[1,…,u],B←C[u+1,…,n]
其中,C[1,…,u]表示密文C中的第1至u个字符,C[u+1,…,n]表示密文C中的第u至n个字符;
S213,将这两个字符串A和B分别转为BN型整数α和β:
α←NUMradix(A),β←NUMradix(B)。
进一步的,步骤S22包括如下子步骤:
S221,利用KDF变换计算d字节的掩码字节串E:
E←KDF(d) K(M)
M=[1]1||[2]1||[1]1||[radix]3||[10]1||[u mod 2 56]1||[n]4||[t]4||T||[0](-t-1-b)mod 16||[i]1||[α]b
S222,将d字节的掩码字节串E转为BN型整数γ:
γ←NUM(E)
S223,执行模减运算得到BN型整数δ:
δ←(β-γ)mod radixm
其中,INT型整数m的取值为,如果imod2=0,m←u,否则m←v;
S224,左右互换,即β←α,α←δ;
S225,按迭代次数重复执行步骤S221~S224,迭代完成后得到BN型整数α和β。
进一步的,步骤S23包括如下子步骤:
S231,将步骤S225得到的BN型整数α和β分别转为字符串A和B:
Figure BDA0003026315730000061
S232,串联字符串A和B,P←A||B,返回明文P。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
1、本发明的加密方法的执行效率显著优于NIST的FF1算法;
2、安全性方面,本发明采用通用的经过论证的Feistel架构,执行轮数与NIST的FF1算法一样为10轮,这些都确保本发明具有足够的安全性。
3、本发明采用国产密码算法SM3作为核心密码算法,因此可以在我国各行业的商用密码应用实施方案中应用。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明的数据类型转换示意图。
图2为本发明实施例1的加密方法的流程图。
图3为本发明的KDF变换原理图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
首先介绍本发明涉及的基本概念:
1、数据类型
(1)字符型和字符串:
定义由radix个字符char0,char1,…,charradix-1组成的字符表为chars={char0,char1,…,charradix-1},称字符表中字符个数radix为字符表的基数。字符串为字符表中有限个字符组成的字符序列,也称为radix字符串。记charsn为由字符表chars={char0,char1,…,charradix-1}中字符组成的长度为n的字符串的集合。明文和密文是由字符表chars中的多个字符组成的字符串。例如,最常见的数字字符表为chars={0,1,…,9},radix=10,明文和密文在集合charsn={0,1,…,9}n中。常见的基数radix取值除了之前提到的10之外有2、26、95等,这些分别对应比特、字母(仅大写字母或仅小写字母)、可打印ASCII字符(空格被视为可打印字符)的字符表。
(2)字节和字节串:本发明提及的字节为通常意义上的字节,即为8个0、1比特组成的字节。字节串为有限个字节组成的字节序列。
(3)整数:即普通的整数。本发明中将值较小的整数(比如不大于232)记为INT型整数,将数值可能较大的整数记为BN型整数,比如值为296的整数只能表示为BN型整数。
2、数据类型转换
本发明的数据类型转换如图1所示。具体如下:
(1)整数转为字符串
Figure BDA0003026315730000082
任意给定一个非负整数x满足0≤x<radixm,记将整数转为字符串的函数为
Figure BDA0003026315730000083
其具体含义是将x按大端表示法表示为radix字符的字符串X且字符串长度不大于m,即X[m+1-i]=x/radixi-1modradix,i=1,2,…,m。即将非负整数x除以radix的i-1次方后,将得到的值再与radix做模运算,将模运算结果作为字符串X的m+1-i个字符。
(2)整数转字节串[x]s:任意给定一个非负整数x满足0≤x<256s,记将整数转为字节串的函数为[x]s,其具体含义是将x按大端表示法表示为字节长度为s的字节串,即X[m+1-i]=x/256i-1mod256,i=1,2,…,m。即将非负整数x除以256的i-1次方后,将得到的值再与256做模运算,将模运算结果作为字节串X的m+1-i个字符,这里的256为1个字节的大小。
(3)字符串转整数NUMradix(X):任意给定一个定义在基数为radix的字符集上的字符串X,记将字符串转为整数的函数为NUMradix(X),其具体含义是将按大端表示法表示的radix字符串X,转化为一个普通的非负整数x,即
Figure BDA0003026315730000081
即将字符串X的m+1-i个字符与radix的i-1次方相乘,将i=1,2,…,m时的相乘结果累加后得到非负整数x。
(4)字节串转整数NUM(X):任意给定一个字符串X,记将字符串转为整数的函数为NUMradix(X),其具体含义是将按大端表示法表示的字符串X,转化为一个普通的非负整数x,即
Figure BDA0003026315730000091
即将字节串X的m+1-i个字节与256的i-1次方相乘,将i=1,2,…,m时的相乘结果累加后得到非负整数x。
3、主要数据
(1)明文:明文是由字符表chars={char0,char1,…,charradix-1}中的多个字母组成的字符串。比如由11个数字构成的电话号码。
(2)密文:明文是由字符表chars={char0,char1,…,charradix-1}中的多个字母组成的字符串。比如由18个数字构成的字符串。
(3)调节因子:调节因子是多个字节构成的字节串,类似于CBC模式中的初始向量IV和OCB模式中的NONCE值。调节因子的作用有:改变调节因子比改变密钥代的价小,因为改变密钥必然需要重新进行子密钥扩展,而子密钥扩展算法通常都较复杂;调节值可以公开,无需像密钥一样保密;FPE方案中的密文空间比较小,使用不同的调节因子可使得同一密钥对同一明文加密得到不同的密文值,从而增加密文的多变性。
(4)密钥:秘密信息,字节串。
4、记号、缩写与符号
本发明主要涉及的记号、缩写与符号如下:
(1)chars={char0,char1,…,charradix-1}:由radix个字符char0,char1,…,charradix-1组成的字符表。
(1)radix:字符表chars={char0,char1,…,charradix-1}的基数。
(3)charsn:由字符表chars={char0,char1,…,charradix-1}中字符组成的长度为n的字符串的集合。
(4)
Figure BDA0003026315730000101
将整数x转为radix字符串的函数。
(5)[x]s:整数x转字节串的函数。
(6)NUMradix(X):radix字符串转整数的函数。
(7)NUM(X):字节串转整数的函数。
(8)A←B:赋值,将B的值给A。
(9)A||B:串联,将A和B按A在左端、B在右端的顺序串联在一起。
(10)∧:与运算。
(11)<<:左移位运算。
(12)X[i]:对字符串/字节串X,取其第i个字符/字节。
(13)X[i,…,j]:对字符串/字节串X,取其第i至j个字符/字节,形成新的子串。
(14)
Figure BDA0003026315730000102
向上取整,取大于等于x的最小整数。
(15)
Figure BDA0003026315730000103
向下取整,取小于等于x的最大整数。
(16)KDF(d) K(M):使用密钥K对数据M计算进行KDF变换,输出d字节的掩码字节串。
实施例1
如图2所示,本实施例提出一种基于国密密码杂凑算法的保留格式加密方法,记所述加密方法表示为SM3FPE.Enc(K,T,P),包括如下步骤:
S11,字符串拆分:将输入的待加密明文P拆分为两个子字符串并分别转化为BN型整数;
具体地:
S111,输入:
密钥K,本实施例中,密钥K为不少于16字节的字节串;
长度为t字节的调节因子T;
以及待加密明文P;所述待加密明文P是长度为n的字符串;其中,n满足
Figure BDA0003026315730000111
radix满足2≤radix≤65536。
S112,分别取INT型整数
Figure BDA0003026315730000112
v←n-u,
Figure BDA0003026315730000113
Figure BDA0003026315730000114
符号←代表赋值;将待加密明文P拆分为两个字符串A和B:
A←P[1,…,u],B←P[u+1,…,n]
其中,P[1,…,u]表示明文字符串P中的第1至u个字符,P[u+1,…,n]表示明文字符串P中的第u至n个字符;
S113,将这两个字符串A和B分别转为BN型整数α和β:
α←NUMradix(A),β←NUMradix(B)
S12,字符串迭代:设置迭代索引号为i=0,1,2,…,9,对步骤S11得到的两个BN型整数进行10轮基于Feistel结构和KDF变换的迭代;所述KDF变换是基于国密密码杂凑算法SM3的密钥导出函数;
具体地:
S121,利用KDF变换计算d字节的掩码字节串E:
E←KDF(d) K(M)
M=[1]1||[2]1||[1]1||[radix]3||[10]1||[u mod 2 56]1||[n]4||[t]4||T||[0](-t-1-b)mod 16||[i]1||[β]b
如图3所示,KDF变换的方法具体包括:
S1211,计算
Figure BDA0003026315730000115
d满足0≤d<232,初始R为空串,即字节长度为0;
S1212,对整数i=1,2,...,n,执行:
R←R||SM3(K||M||[i]4)
S1213,截取步骤S1212得到的R最左边的d个字节,得到d个字节的掩码字节串E=R[1..d],然后返回E。
S122,将d字节的掩码字节串E转为BN型整数γ:
γ←NUM(E)
S123,执行模加运算得到BN型整数δ:
δ←(α+γ)mod radixm
其中,INT型整数m的取值为,如果imod2=0,m←u,否则m←v;
S124,左右互换,即α←β,β←δ;
S125,按迭代次数重复执行步骤S121~S124,迭代完成后得到BN型整数α和β;
S13,字符串合并:将迭代得到的两个BN型整数分别转为字符串后串联合并为一个字符串,得到密文C;
具体地:
S131,将步骤S125得到的BN型整数α和β分别转为字符串A和B:
Figure BDA0003026315730000121
S132,串联字符串A和B,C←A||B,返回密文C。
本发明实施例的加密方法具有如下有益效果:
1、效率方面:
本发明的加密方法与NIST的FF1算法的关键部件执行次数对比如表1所示。
表1:
Figure BDA0003026315730000131
从表1可知:
(1)在保留格式加密算法中,类型转换的耗时比调用密码函数的耗时高的多,特别是整数转字符串和字符串转整数。在本发明的加密方法中只需进行2次整数转字符串和字符串转整数,比起NIST的FF1算法的10次和20次,其执行次数均少得多。整数与字节串的互转次数也优于NIST的FF1算法。
(2)加密函数调用方面,NIST的FF1算法需
Figure BDA0003026315730000132
次AES加密,本发明的加密方法执行
Figure BDA0003026315730000133
次SM3,优于NIST的FF1算法。
本发明的加密方法与NIST的FF1算法的加密时间对比如表2所示。测试环境为Win10操作系统,Intel Core i5-10210U CPU@1.60GHz处理器,8.0GB RAM。测试方式为各算法分别对模拟生成的106个样本,进行加密,每个样本是18位数字。
表2:
Figure BDA0003026315730000134
从表2可知,本发明的加密方法的执行效率显著优于NIST的FF1算法。
2、安全性方面,本发明采用通用的经过论证的Feistel架构,执行轮数与NIST的FF1算法一样为10轮,这些都确保本发明具有足够的安全性。
3、本发明采用国产密码算法SM3作为核心密码算法,因此可以在我国各行业的商用密码应用实施方案中应用。
实施例2
本实施例提供一种基于国密密码杂凑算法的保留格式解密方法,所述解密方法为实施例1的加密方法的逆运算,具体包括如下步骤:
S21,字符串拆分:将输入待解密密文C拆分为两个子字符串并分别转化为BN型整数;
具体地:
S211,输入:
密钥K,同样,密钥K为不少于16字节的字节串;
长度为t字节的调节因子T;
以及待解密密文C;所述待解密密文C是长度为n的字符串;其中,n满足
Figure BDA0003026315730000141
radix满足2≤radix≤65536。
S212,分别取INT型整数
Figure BDA0003026315730000142
v←n-u,符号←代表赋值;将待解密密文C拆分为两个字符串A和B:
A←C[1,…,u],B←C[u+1,…,n]
其中,C[1,…,u]表示密文C中的第1至u个字符,C[u+1,…,n]表示密文C中的第u至n个字符;
S213,将这两个字符串A和B分别转为BN型整数α和β:
α←NUMradix(A),β←NUMradix(B)
S22,字符串迭代:设置迭代索引号为i=9,8,…,0,对步骤S21得到的两个BN型整数进行10轮基于Feistel结构和KDF变换的迭代;所述KDF变换是基于国密密码杂凑算法SM3的密钥导出函数;
具体地:
S221,利用KDF变换计算d字节的掩码字节串E:
E←KDF(d) K(M)
M=[1]1||[2]1||[1]1||[radix]3||[10]1||[u mod 2 56]1||[n]4||[t]4||T||[0](-t-1-b)mod 16||[i]1||[α]b
这里的KDF变换与实施例1一样,在此不再赘述。
S222,将d字节的掩码字节串E转为BN型整数γ:
γ←NUM(E)
S223,执行模减运算得到BN型整数δ:
δ←(β-γ)mod radixm
其中,INT型整数m的取值为,如果imod2=0,m←u,否则m←v;
S224,左右互换,即β←α,α←δ;
S225,按迭代次数重复执行步骤S221~S224,迭代完成后得到BN型整数α和β;
S23,字符串合并:将迭代得到的两个BN型整数分别转为字符串后串联合并为一个字符串,得到明文P;
具体地:
S231,将步骤S225得到的BN型整数α和β分别转为字符串A和B:
Figure BDA0003026315730000161
S232,串联字符串A和B,P←A||B,返回明文P。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (4)

1.一种基于国密密码杂凑算法的保留格式加密方法,其特征在于,所述加密方法包括如下步骤:
S11,字符串拆分:将输入的待加密明文P拆分为两个子字符串并分别转化为BN型整数;
S12,字符串迭代:设置迭代索引号为i=0,1,2,…,9,对步骤S11得到的两个BN型整数进行10轮基于Feistel结构和KDF变换的迭代;所述KDF变换是基于国密密码杂凑算法SM3的密钥导出函数;
S13,字符串合并:将迭代得到的两个BN型整数分别转为字符串后串联合并为一个字符串,得到密文C;
步骤S11包括如下子步骤:
S111,输入密钥K,长度为t字节的调节因子T,以及待加密明文P;所述待加密明文P是长度为n的字符串,n满足
Figure FDA0003646567320000011
radix满足2≤radix≤65536;
S112,分别取INT型整数
Figure FDA0003646567320000012
v←n-u,
Figure FDA0003646567320000013
Figure FDA0003646567320000014
符号←代表赋值;将待加密明文P拆分为两个字符串A和B:
A←P[1,…,u],B←P[u+1,…,n]
其中,P[1,…,u]表示明文字符串P中的第1至u个字符,P[u+1,…,n]表示明文字符串P中的第u至n个字符;
S113,将这两个字符串A和B分别转为BN型整数α和β:
α←NUMradix(A),β←NUMradix(B)
步骤S12包括如下子步骤:
S121,利用KDF变换计算d字节的掩码字节串E:
E←KDF(d) K(M)
M=[1]1||[2]1||[1]1||[radix]3||[10]1||[umod 256]1||[n]4||[t]4||T||[0](-t-1-b)mod16||[i]1||[β]b
S122,将d字节的掩码字节串E转为BN型整数γ:
γ←NUM(E)
S123,执行模加运算得到BN型整数δ:
δ←(α+γ)modradixm
其中,INT型整数m的取值为,如果imod 2=0,m←u,否则m←v;
S124,左右互换,即α←β,β←δ;
S125,按迭代次数重复执行步骤S121~S124,迭代完成后得到BN型整数α和β;
步骤S121中所述KDF变换的方法包括如下步骤:
S1211,计算
Figure FDA0003646567320000021
d满足0≤d<232,初始R为空串,即字节长度为0;
S1212,对整数i=1,2,...,n,执行:
R←R||SM 3(K||M||[i]4)
S1213,截取步骤S1212得到的R最左边的d个字节,得到d个字节的掩码字节串E=R[1..d],然后返回E。
2.根据权利要求1所述的基于国密密码杂凑算法的保留格式加密方法,其特征在于,步骤S13包括如下子步骤:
S131,将步骤S125得到的BN型整数α和β分别转为字符串A和B:
Figure FDA0003646567320000031
S132,串联字符串A和B,C←A||B,返回密文C。
3.一种基于国密密码杂凑算法的保留格式解密方法,其特征在于,所述解密方法用于对权利要求1至2任一项所述的加密方法得到的密文C进行解密;所述解密方法包括:
S21,字符串拆分:将输入待解密密文C拆分为两个子字符串并分别转化为BN型整数;
S22,字符串迭代:设置迭代索引号为i=9,8,…,0,对步骤S21得到的两个BN型整数进行10轮基于Feistel结构和KDF变换的迭代;所述KDF变换是基于国密密码杂凑算法SM3的密钥导出函数;
S23,字符串合并:将迭代得到的两个BN型整数分别转为字符串后串联合并为一个字符串,得到明文P;
步骤S21包括如下子步骤:
S211,输入密钥K,长度为t字节的调节因子T,以及待解密密文C;所述待解密密文C是长度为n的字符串,n满足
Figure FDA0003646567320000032
radix满足2≤radix≤65536;
S212,分别取INT型整数
Figure FDA0003646567320000033
v←n-u,符号←代表赋值;将待解密密文C拆分为两个字符串A和B:
A←C[1,…,u],B←C[u+1,…,n]
其中,C[1,…,u]表示密文C中的第1至u个字符,C[u+1,…,n]表示密文C中的第u至n个字符;
S213,将这两个字符串A和B分别转为BN型整数α和β:
α←NUMradix(A),β←NUMradix(B)
步骤S22包括如下子步骤:
S221,利用KDF变换计算d字节的掩码字节串E:
E←KDF(d) K(M)
M=[1]1||[2]1||[1]1||[radix]3||[10]1||[umod 256]1||[n]4||[t]4||T||[0](-t-1-b)mod16||[i]1||[α]b
S222,将d字节的掩码字节串E转为BN型整数γ:
γ←NUM(E)
S223,执行模减运算得到BN型整数δ:
δ←(β-γ)modradixm
其中,INT型整数m的取值为,如果imod2=0,m←u,否则m←v;
S224,左右互换,即β←α,α←δ;
S225,按迭代次数重复执行步骤S221~S224,迭代完成后得到BN型整数α和β。
4.根据权利要求3所述的基于国密密码杂凑算法的保留格式解密方法,其特征在于,步骤S23包括如下子步骤:
S231,将步骤S225得到的BN型整数α和β分别转为字符串A和B:
Figure FDA0003646567320000041
S232,串联字符串A和B,P←A||B,返回明文P。
CN202110416963.XA 2021-04-19 2021-04-19 基于国密密码杂凑算法的保留格式加密方法及解密方法 Active CN113037488B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110416963.XA CN113037488B (zh) 2021-04-19 2021-04-19 基于国密密码杂凑算法的保留格式加密方法及解密方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110416963.XA CN113037488B (zh) 2021-04-19 2021-04-19 基于国密密码杂凑算法的保留格式加密方法及解密方法

Publications (2)

Publication Number Publication Date
CN113037488A CN113037488A (zh) 2021-06-25
CN113037488B true CN113037488B (zh) 2022-07-22

Family

ID=76456780

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110416963.XA Active CN113037488B (zh) 2021-04-19 2021-04-19 基于国密密码杂凑算法的保留格式加密方法及解密方法

Country Status (1)

Country Link
CN (1) CN113037488B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115174039A (zh) * 2022-08-08 2022-10-11 王伟忠 一种基于国产商用密码算法的快速保留数据格式加密计算方法
CN116707804B (zh) * 2023-08-07 2023-10-31 中电信量子科技有限公司 增强ff1格式保留加密安全性的方法及设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108831048A (zh) * 2018-09-20 2018-11-16 安徽亘达信息科技有限公司 一种基于扫码信息的智能收发卡计费系统及方法
CN110750810A (zh) * 2019-10-23 2020-02-04 卓尔智联(武汉)研究院有限公司 数据脱敏方法、装置、计算机设备和存储介质
CN110768797A (zh) * 2019-11-13 2020-02-07 西北师范大学 一种基于身份格式保留加密的数据脱敏方法
CN112597480A (zh) * 2020-12-28 2021-04-02 北京炼石网络技术有限公司 一种可扩展的格式保留加密方法的实现方式

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2904732B1 (en) * 2012-10-04 2018-11-28 Intrinsic ID B.V. System for generating a cryptographic key from a memory used as a physically unclonable function
CN106408065B (zh) * 2016-09-05 2019-06-11 成都天钥科技有限公司 一种二维码编码方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108831048A (zh) * 2018-09-20 2018-11-16 安徽亘达信息科技有限公司 一种基于扫码信息的智能收发卡计费系统及方法
CN110750810A (zh) * 2019-10-23 2020-02-04 卓尔智联(武汉)研究院有限公司 数据脱敏方法、装置、计算机设备和存储介质
CN110768797A (zh) * 2019-11-13 2020-02-07 西北师范大学 一种基于身份格式保留加密的数据脱敏方法
CN112597480A (zh) * 2020-12-28 2021-04-02 北京炼石网络技术有限公司 一种可扩展的格式保留加密方法的实现方式

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
R. Moskowitz等.UAS Operator Privacy for RemoteID Messagesdraft-moskowitz-drip-operator-privacy-05.《IETF 》.2020, *
张玉磊等.基于格式保留的敏感信息加密方案.《计算机工程与科学》.2020,(第02期), *

Also Published As

Publication number Publication date
CN113037488A (zh) 2021-06-25

Similar Documents

Publication Publication Date Title
CN112994874B (zh) 一种基于消息鉴别码算法的保留格式加密方法及解密方法
Yavuz et al. A chaos-based image encryption algorithm with simple logical functions
CN113037488B (zh) 基于国密密码杂凑算法的保留格式加密方法及解密方法
JPH09230786A (ja) データの暗号化方法及び装置
KR100800468B1 (ko) 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법
CN102843372A (zh) 一种基于随机区间划分的保序加密方法
CN110768785A (zh) 一种编、解码方法、相关装置及计算机设备
Lin et al. An enhanced variable-length arithmetic coding and encryption scheme using chaotic maps
CN1286077C (zh) 基于动态变长码的数据加密与解密系统
KR100583495B1 (ko) 암호화 방법
Sani et al. Creation of S-box based on a hierarchy of Julia sets: image encryption approach
WO2002054664A2 (en) R-conversion encryption method and system
Galbreath Cryptography for Internet and database applications: developing secret and public key techniques with Java
CN113254971B (zh) 一种基于揭序加密的多数据类型密文比较方法
Siahaan et al. Application of Data Encryption Standard and Lempel-Ziv-Welch Algorithm for File Security
Shawkat et al. Optimization-based pseudo random key generation for fast encryption scheme
CN114124359A (zh) 保留格式加密数据的方法、装置、电子设备及存储介质
Lui et al. A pseudo-random number generator employing multiple Renyi maps
CN115114279A (zh) 置换表生成方法、数据加、解密方法及装置、介质、设备
Al-Jarrah et al. Word-based encryption algorithm using dictionary indexing with variable encryption key length
Sagun et al. Devising a method for improving crypto resistance of the symmetric block cryptosystem RC5 using nonlinear shift functions
CN107896143B (zh) 基于高维混沌系统和算术编码的联合编码方法
Patro et al. Text-to-Image Encryption and Decryption Using Piece Wise Linear Chaotic Maps
Jawad et al. An enhanced RC4 algorithm using an efficient PRNG generation method based on Newton Raphson method, SHA-1 and piecewise chaos method
DUMAN et al. Encryption and Decryption of the Data by Using the Terms of the Lucas Series

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant