CN101841415A - 一种面向字的密钥流生成方法及加密方法 - Google Patents
一种面向字的密钥流生成方法及加密方法 Download PDFInfo
- Publication number
- CN101841415A CN101841415A CN200910243258A CN200910243258A CN101841415A CN 101841415 A CN101841415 A CN 101841415A CN 200910243258 A CN200910243258 A CN 200910243258A CN 200910243258 A CN200910243258 A CN 200910243258A CN 101841415 A CN101841415 A CN 101841415A
- Authority
- CN
- China
- Prior art keywords
- output
- key stream
- key
- word
- input
- 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
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种面向字的密钥流生成方法及加密方法,密钥流生成方法包括:生成步骤,用于产生源序列,输入到选择步骤;选择步骤选择源序列中的一些位组成四个输出。其中三个输入到混淆步骤,另外一个输入到输出步骤;混淆步骤将三个输入进行非线性压缩变换,产生一个输出;输出步骤接收选择步骤的一个输出和混淆步骤的输出,组合压缩得到密钥流输出。本发明生成的密钥流序列,具有良好的随机性和非线性性,并且适合软硬件快速实现;利用本发明生成的密钥流进行加密的方法具有更好的安全性。
Description
技术领域
本发明主要应用于信息安全传输领域,具体涉及一种用于产生加密用密钥流序列的密钥流生成方法及加密方法。
背景技术
密码技术历史悠久,最初用于保护军事和外交通信安全。但是,随着通信网络和计算机网络的普及,现代密码学的应用不再局限于政治、军事和外交,其商业价值和社会价值得到了广泛的认同。保密是密码学的核心,而加密是获得信息保密的实用工具。现代加密技术就是一些数学变换(算法),在加密者拥有的秘密信息(加密密钥)控制下,将要加密的信息(明文)变换成难于理解和与随机信息难于区分的信息(密文),通过不安全的信道传送给接收者。而解密操作,就是在接收者拥有的秘密信息(解密密钥)的控制下,将密文恢复成明文。根据加、解密者拥有的密钥是否相同,可以把加密算法分为公钥密码算法和私钥密码算法。公钥密码算法的加、解密密钥不同,加密密钥一般是公开的,解密密钥为消息接收者私有。私钥密码算法的加、解密密钥一般是相同的,均是保密的。而且加、解密的变换一般也是相同或相似的。
私钥密码算法又分为分组密码算法和流密码算法。分组密码算法一般对消息进行分块加密,算法运行一次加密一个较大的消息块。流密码算法一般用一个短的密钥,用特定的密钥流生成算法,生成与要加密的消息长度相当的密钥流序列,将密钥流序列与明文按位异或达到加密的目的。而解密方生成同样的密钥流序列,与密文异或,即可得到明文。所以,流密码算法的关键是设计安全快速的密钥流生成算法。传统的密钥流生成算法每运行一次,只产生一个比特的密钥流。
流密码一直是各国争相研究的热门课题。因为它具有实现简单,加密速度快(比分组密码快5到10倍)、无或只有有限的错误传播等特点。随着通信网络和计算机网络的高速发展,传统的运行一次生成一个比特的密钥流生成方法已经不能满足实现速度上的需要,尤其是软件实现方面。一些面向字的密钥流生成方法逐渐被设计出来。即运行一次生成若干比特的密钥字,由密钥字组成密钥流序列。例如SNOW 3G算法、Rabbit算法。
在此背景下,需要一种面向字的密钥流生成方法及加密的方法,适合软硬件实现并且安全性高。
发明内容
本发明的目的在于提供一种面向字的密钥流生成方法。以初始密钥和初始向量作为输入,产生一定长度的密钥流序列。本方法能够在软、硬件上快速实现,生成的密钥流序列有良好的随机性和非线性性。本发明的另一目的在于提供一种加密方法,利用本发明提供的密钥流生成方法产生的密钥流序列对消息进行加密。
为了达到上述发明目的,本发明的技术方案概述如下:
一种面向字的密钥流生成方法,包括以下步骤,
1)生成步骤,利用线性反馈移位寄存器生成一个源序列;
2)选择步骤,从源序列读取若干位,重新排列组合后,为混淆步骤和输出步骤提供输入,其中为混淆步骤提供的输入分为三个部分;
3)混淆步骤,采用两个寄存器单元实现,具体包括:
A、将两个寄存器单元的值和一部分输入,进行非线性压缩运算,生成混淆步骤的输出;
B、对两个寄存器的值,分别用选择步骤剩余两部分输入进行运算生成两个中间结果;
C、将两个中间结果进行线性混合,得到两个新的中间结果;
D、两个新的中间结果分别输入两个非线性变换单元,两个非线性变换单元的输出分别更新两个寄存器单元的值;
4)输出步骤,将混淆步骤的输出和选择步骤提供的输入按位异或得到密钥流。
所述选择步骤从源序列读取若干位,重新组合成4个32比特的字。
所述混淆步骤采用线性的按位异或运算,或者非线性的进位加法运算生成两个中间结果。
所述两个非线性变换单元均为两层结构,包括线性变换层和非线性变换层。
所述非线性变换层由4个小s盒并列组成,对输入进行分组并对每一个组内的比特进行非线性变换;非线性变换层可置于线性变换层之前或之后。
为了达到上述另一发明目的,本发明的技术方案概述如下:
一种加密方法,其步骤包括:
1)将密钥和初始向量利用密钥扩展算法装入线性反馈移位寄存器,并进行初始化操作;
2)生成密钥流,方法如下:
2-1)选择步骤,从线性反馈移位寄存器读取若干位,重新排列组合后,为混淆步骤和输出步骤提供输入;
2-2)混淆步骤,采用两个寄存器单元实现,具体包括:
A、将两个寄存器单元的值和一部分输入,进行非线性压缩运算,生成混淆步骤的输出;
B、对两个寄存器的值,分别用选择步骤剩余两部分输入进行运算生成两个中间结果;
C、将两个中间结果进行线性混合,得到两个新的中间结果;
D、两个新的中间结果分别输入两个非线性变换单元,两个非线性变换单元的输出分别更新两个寄存器单元的值;
2-3)输出步骤,将混淆步骤的输出和选择步骤提供的输入按位异或得到一个字的密钥流;
2-4)对线性反馈移位寄存器状态进行更新。
3)产生的密钥流与要加密的消息的一个字按位异或,实现对这个消息字的加密;
4)重复步骤2)、3)实现对所有原始消息的加密,并将加密消息发送到消息接收方;
5)消息接收方拥有与加密密钥相同的解密密钥和初始向量,利用步骤1)对所有寄存器赋初值。
6)利用步骤2)生成密钥流的方法,得到一个字的密钥流;
7)产生的密钥流与加密消息的一个字按位异或,实现对这个加密消息字的解密;
8)重复步骤6)、7)实现对加密消息的解密,得到原始消息。
所述步骤1)利用密钥扩展算法将加密密钥和初始向量装入线性反馈移位寄存器。
生成密钥流之前:
初始化操作为重复执行以下步骤若干次:
步骤2-1),步骤2-2),将混淆步骤的输出参与线性反馈移位寄存器的更新;
初始化之后运行一次步骤2),并丢弃输出。
本发明的有益效果:本发明生成的密钥流序列,具有良好的随机性和非线性性,并且适合软硬件快速实现。利用本发明生成的密钥流进行加密的方法具有更好的安全性。
附图说明
图1为本发明密钥流生成方法基本步骤示意图。
图2为本发明密钥流生成方法详细步骤示意图。
图3为本发明密钥流生成方法具体实施框图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细描述:
图1是本发明密钥流生成方法的基本步骤示意图,包括各个步骤及各步骤间的输入输出关系。其中,生成步骤产生随机性好、周期长的源序列,输入到选择步骤。选择步骤选择源序列中的一些位组成四个输出。其中三个输入到混淆步骤,另外一个输入到输出步骤。混淆步骤将三个输入进行非线性压缩变换,产生一个输出。输出步骤接收选择步骤的一个输出和混淆步骤的输出,组合压缩得到密钥流输出。
图2是本发明密钥流生成方法的详细步骤的示意图。混淆步骤将从选择步骤接收到的输入进行压缩和置乱,是本密钥流生成方法最主要的步骤。此步骤的输出,将作为输出步骤的一个输入。混淆步骤包含两个寄存器单元。生成步骤为混淆步骤提供的输入,可以分为三部分。混淆步骤的基本步骤包括:
(1)将两个寄存器单元的值和第一部分输入,进行非线性的变换和压缩,生成混淆步骤的输出。
(2)对两个寄存器的值,分别用混淆步骤的剩余两部分输入进行线性或非线性运算生成两个中间结果。
(3)将两个中间结果进行线性混合,得到两个新的中间结果。
(4)两个新的中间结果分别输入两个非线性变换,两个非线性变换的输出分别更新两个寄存单元的值。
其中,两个非线性变换均为两层结构,线性变换层L将输入的比特进行线性置乱,非线性变换层S将输入的比特分块进行非线性变换。
本发明密钥流生成方法的实施由密钥流生成器完成,密钥流生成器主要由以下四个模块构成:
(1)生成模块,密钥流生成器的驱动部分。
(2)选择模块,也可以称为比特重组模块。
(3)混淆模块,即非线性模块F。
(4)输出模块,组合变换输出密钥流。
为了更好的理解本发明,下面结合具体实施方式对本发明进行更为详细的描述。图3为本发明密钥流生成方法具体实施框图。此实施方式即为一个密钥流生成器。
首先,对本发明中出现的符号做如下约定:
+ 整数的普通加法运算
ab 整数a和b的普通乘法运算
= 整数的赋值
mod 整数取余运算
a||b 子串a和b的连接运算
aH 取整数a的最左边16比特子串
aL 取整数a的最右边16比特子串
a>>1 舍弃32比特整数a的最末位比特
a<<<c 将a循环左移c位
a→b 赋值,表示将a的值赋给b
下面,依次介绍密钥流生成器的4个模块与密钥流序列生成流程。如图3所示:
(1)生成模块执行生成步骤,此模块是密钥流生成器的驱动部分。目的是提供周期长、随机性质良好的源序列。在此,由素域上的线性反馈移位寄存器(LFSR)构成。对应的生成多项式为(在具体实施时也可以采用其他的多项式):
f(x)=x16+215x15+217x13+221x10+220x4+28+1。
故此LFSR有16级,每一级由31位构成。此多项式为本原多项式,故产生的序列为m序列,周期为2496-1。LFSR在某个时刻的状态可以用(s0,s1,...,s15)表示。每个寄存器si(0≤i≤15)都限制在集合{1,2,3,...,231-1}中取值。LFSR的运行模式有2种:初始化模式和工作模式。
在初始化模式下,LFSR接收一个31比特的输入字u,其是由函数F的32比特输出W通过舍弃最低位比特得到,即u=W>>1。其计算过程如下:
v=215s15+217s13+221s10+220s4+(1+28)s0 mod 231-1
如果s16=0,则置s16=231-1
(s1,s2,...,s15,s16)→(s0,s1,...,s14,s15)
在工作模式下,LFSR不接收任何输入。其计算过程如下:
s16=215s15+217s13+221s10+220s4+(1+28)s0 mod 231-1
(s1,s2,...,s15,s16)→(s0,s1,...,s14,s15)
注:上述两种模式下整数模231-1取余的结果都限制在集合{1,2,3,...,231-1}中。
(2)选择模块执行选择步骤,其主要作用是将上层LFSR的状态字重组成32比特的字,以供下层非线性函数F调用。
设s0、s2、s5、s7、s8、s12、s14、s15为LFSR的8个对应的寄存器,如图3所示。比特重组将上述寄存器内容重组成4个32比特的字:X0、X1、X2、X3。具体计算过程如下:
X0=s15H||s14L,X1=s12L||s8H,X2=s7H||s5L,X3=s2L||s0H。
(3)非线性函数F
非线性函数F有2个32比特的记忆单元R1和R2。设F的输入为X0、X1、X2,其为比特重组的输出,输出为W。则F输出的计算和记忆单元的更新过程如下:
R1=S(L1(W1L||W2H))
R2=S(L2(W2L||W1H))
其中,L1和L2为32比特的线性变换
S盒由4个小的8*8的S盒并置而成,即:S=(S0,S1,S2,S3),其中S0=S2,S1=S3。S0和S1的定义分别见表1和表2(其中的内容可以更改)。
设S盒的32比特输入X和32比特输出Y分别为:
X=x0||x1||x2||x3,
Y=y0||y1||y2||y3,
其中xi和yi均为8比特字节,i=0,1,2,3。则有
yi=Si(xi),i=0,1,2,3。
表1
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
0 | 3E | 72 | 5B | 47 | CA | E0 | 00 | 33 | 04 | D1 | 54 | 98 | 09 | B9 | 6D | CB |
1 | 7B | 1B | F9 | 32 | AF | 9D | 6A | A5 | B8 | 2D | FC | 1D | 08 | 53 | 03 | 90 |
2 | 4D | 4E | 84 | 99 | E4 | CE | D9 | 91 | DD | B6 | 85 | 48 | 8B | 29 | 6E | AC |
3 | CD | C1 | F8 | 1E | 73 | 43 | 69 | C6 | B5 | BD | FD | 39 | 63 | 20 | D4 | 38 |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
4 | 76 | 7D | B2 | A7 | CF | ED | 57 | C5 | F3 | 2C | BB | 14 | 21 | 06 | 55 | 9B |
5 | E3 | EF | 5E | 31 | 4F | 7F | 5A | A4 | 0D | 82 | 51 | 49 | 5F | BA | 58 | 1C |
6 | 4A | 16 | D5 | 17 | A8 | 92 | 24 | 1F | 8C | FF | D8 | AE | 2E | 01 | D3 | AD |
7 | 3B | 4B | DA | 46 | EB | C9 | DE | 9A | 8F | 87 | D7 | 3A | 80 | 6F | 2F | C8 |
8 | B1 | B4 | 37 | F7 | 0A | 22 | 13 | 28 | 7C | CC | 3C | 89 | C7 | C3 | 96 | 56 |
9 | 07 | BF | 7E | F0 | 0B | 2B | 97 | 52 | 35 | 41 | 79 | 61 | A6 | 4C | 10 | FE |
A | BC | 26 | 95 | 88 | 8A | B0 | A3 | FB | C0 | 18 | 94 | F2 | E1 | E5 | E9 | 5D |
B | D0 | DC | 11 | 66 | 64 | 5C | EC | 59 | 42 | 75 | 12 | F5 | 74 | 9C | AA | 23 |
C | 0E | 86 | AB | BE | 2A | 02 | E7 | 67 | E6 | 44 | A2 | 6C | C2 | 93 | 9F | F1 |
D | F6 | FA | 36 | D2 | 50 | 68 | 9E | 62 | 71 | 15 | 3D | D6 | 40 | C4 | E2 | 0F |
E | 8E | 83 | 77 | 6B | 25 | 05 | 3F | 0C | 30 | EA | 70 | B7 | A1 | E8 | A9 | 65 |
F | 8D | 27 | 1A | DB | 81 | B3 | A0 | F4 | 45 | 7A | 19 | DF | EE | 78 | 34 | 80 |
表2
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
0 | 55 | C2 | 63 | 71 | 3B | C8 | 47 | 86 | 9F | 3C | DA | 5B | 29 | AA | FD | 77 |
1 | 8C | C5 | 94 | 0C | A6 | 1A | 13 | 00 | E3 | A8 | 16 | 72 | 40 | F9 | F8 | 42 |
2 | 44 | 26 | 68 | 96 | 81 | D9 | 45 | 3E | 10 | 76 | C6 | A7 | 8B | 39 | 43 | E1 |
3 | 3A | B5 | 56 | 2A | C0 | 6D | B3 | 05 | 22 | 666 | BF | DC | 0B | FA | 62 | 48 |
4 | DD | 20 | 11 | 06 | 36 | C9 | C1 | CF | F6 | 27 | 52 | BB | 69 | F5 | D4 | 87 |
5 | 7F | 84 | 4C | D2 | 9C | 57 | A4 | BC | 4F | 9A | DF | FE | D6 | 8D | 7A | EB |
6 | 2B | 53 | D8 | 5C | A1 | 14 | 17 | FB | 23 | D5 | 7D | 30 | 67 | 73 | 08 | 09 |
7 | EE | B7 | 70 | 3F | 61 | B2 | 19 | 8E | 4E | E5 | 4B | 93 | 8F | 5D | DB | A9 |
8 | AD | F1 | AE | 2E | CB | 0D | FC | F4 | 2D | 46 | 6E | 1D | 97 | E8 | D1 | E9 |
9 | 4D | 37 | A5 | 75 | 5E | 83 | 9E | AB | 82 | 9D | B9 | 1C | E0 | CD | 49 | 89 |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
A | 01 | B6 | BD | 58 | 24 | A2 | 5F | 38 | 78 | 99 | 15 | 90 | 50 | B8 | 95 | E4 |
B | D0 | 91 | C7 | CE | ED | 0F | B4 | 6F | A0 | CC | F0 | 02 | 4A | 79 | C3 | DE |
C | A3 | EF | EA | 51 | E6 | 6B | 18 | EC | 1B | 2C | 80 | F7 | 74 | E7 | FF | 21 |
D | 5A | 6A | 54 | 1E | 41 | 31 | 92 | 35 | C4 | 33 | 07 | 0A | BA | 7E | 0E | 34 |
E | 88 | B1 | 98 | 7C | F3 | 3D | 60 | 6C | 7B | CA | D3 | 1F | 32 | 65 | 04 | 28 |
F | 64 | BE | 85 | 9B | 2F | 59 | 8A | D7 | B0 | 25 | AC | AF | 12 | 03 | E2 | F2 |
注:上述S0盒和S1盒数据均为十六进制表示。
(4)输出模块,将比特重组得到的一个字X3和F函数的输出W异或,得到密钥字Z。
在生成密钥流序列之前,首先要将加密密钥和初始向量装入寄存器。设128比特的初始密钥k和128比特的初始向量iv分别为k[0],k[1],k[2],...,k[15]和iv[0],iv[1],iv[2],...,iv[15],其中k[i]和iv[i]均为8比特的字节,0≤i≤15。密钥扩展算法将其扩展成16个31比特的整数作为LFSR的初态。设LFSR的初态为:s0,s1,s2,...,s15,则有:
(1)取长为240的比特串D,按照长度15将其分割成16个15比特的子串:
D=d[0]||d[1]||...||d[15],
其中:
d[0]=1000100110101112,d[1]=0100110101111002,
d[2]=1100010011010112,d[3]=0010011010111102,
d[4]=1010111100010012,d[5]=0110101111000102,
d[6]=1110001001101012,d[7]=0001001101011112,
d[8]=1001101011110002,d[9]=0101111000100112,
d[10]=1101011110001002,d[11]=0011010111100012,
d[12]=1011110001001102,d[13]=0111100010011012,
d[14]=1111000100110102,d[15]=1000111101011002。
(2)对0≤i≤15,有si=k[i]||d[i]||iv[i]。
算法运行分为两个阶段,初始化阶段和密钥流序列生成阶段。
在算法的初始化阶段,首先把128比特的初始密钥k和128比特的初始向量iv经过密钥装入算法扩展后填入到LFSR的寄存器中,作为LFSR的初态,并置32比特记忆单元R1和R2为全0。然后执行下述操作:
重复执行下述过程32次
(1)比特重组部分从LFSR读取8个16比特字,组合成4个32位字,输出。
(2)运行F函数部分,得到输出并更新寄存器值。
(3)以F的输出的高31位作为输入,初始化方式运行LFSR一次(即对线性反馈移位寄存器状态进行更新)。
算法经过初始化后,将进入工作阶段。在工作阶段,算法首先执行下列过程一次:
(1)比特重组部分从LFSR读取8个16比特字,组合成4个32位字,输出。
(2)运行F函数部分,丢弃输出。
(3)密钥生成方式运行LFSR一次。
然后算法进入正式的密钥输出阶段,即在每个时钟节拍内,执行下列过程一次,并输出一个32比特的密钥字:
(1)比特重组部分从LFSR读取8个16比特字,组合成4个32位字,输出。
(2)运行F函数部分,将输出与(1)的第四个输出异或,作为密钥流输出。
(3)密钥生成方式运行LFSR一次。
算法每个节拍生成一个32位的密钥字,运行若干节拍,可以得到密钥流序列。
利用本发明的密钥流生成方法对消息进行加密,消息发送方根据加密密钥和初始向量,运用本发明的密钥流生成方法,将所得的密钥流序列与消息序列按位异或,即可实现对原始消息进行加密的目的。消息接收方拥有与加密密钥相同的解密密钥和初始向量,运用本发明的密钥流生成方法,将所得的密钥流序列与接收到的加密消息按位异或,即可实现对消息进行解密的目的,得到原始消息。具体的方法如下:
1、密钥装入:将密钥和初始向量按照实施例中的方法或者其它方法装入LFSR,两个寄存器单元置0或者其它值。
2、初始化:初始化方式运行算法若干轮。所谓的初始化方式,即在密钥流生成方法中,把混淆步骤的输出参与到寄存器的反馈,不进行输出步骤。
3、加密阶段:
1)按照密钥流生成方法运行一次,丢弃输出。
2)运行密钥流生成方法一次,产生一个字的密钥流。
3)将步骤2)产生的密钥流与要加密的消息的一个字按位异或,实现对这个消息字的加密。
4)重复步骤2)3)实现对所有消息的加密。
4、解密阶段:消息接收方拥有与加密密钥相同的解密密钥和初始向量,
1)按照密钥流生成方法运行一次,丢弃输出。
2)运行密钥流生成方法一次,产生一个字的密钥流。
3)产生的密钥流与要加密消息的一个字按位异或,实现对这个加密消息字的解密;
4)重复步骤2)3)实现对加密消息的解密,得到原始消息。
Claims (3)
1.一种面向字的密钥流生成方法,包括以下步骤,
1)生成步骤,利用线性反馈移位寄存器生成一个源序列;
2)选择步骤,从源序列读取若干位,重新排列组合后,为混淆步骤和输出步骤提供输入;
3)混淆步骤,采用两个寄存器单元实现,具体包括:
A、将两个寄存器单元的值和选择步骤提供的输入,进行非线性压缩运算,生成混淆步骤的输出;
B、对两个寄存器的值,分别用选择步骤提供的输入进行运算生成两个中间结果;
C、将两个中间结果进行线性混合,得到两个新的中间结果;
D、两个新的中间结果分别输入两个非线性变换单元,两个非线性变换单元的输出分别更新两个寄存器单元的值;
4)输出步骤,将混淆步骤的输出和选择步骤提供的输入按位异或得到密钥流。
3、如权利要求1所述的方法,其特征在于,所述选择步骤从源序列读取若干位,重新组合成4个32比特的字。
4、如权利要求1所述的方法,其特征在于,采用线性的按位异或运算,或者非线性的进位加法运算生成两个中间结果。
5、如权利要求1所述的方法,其特征在于,所述两个非线性变换单元均为两层结构,包括线性变换层和非线性变换层。
6、如权利要求5所述的方法,其特征在于,所述非线性变换层由4个小s盒并列组成,对输入进行分组并对每一个组内的比特进行非线性变换。
7、如权利要求5所述的方法,其特征在于,非线性变换层可置于线性变换层之前或之后。
8、一种加密方法,利用权利要求1所述的其步骤包括:
1)将密钥和初始向量装入线性反馈移位寄存器,并进行初始化操作;
2)生成密钥流,方法如下:
2.1)选择步骤,从线性反馈移位寄存器读取若干位,重新排列组合后,为混淆步骤和输出步骤提供输入;
2-2)混淆步骤,采用两个寄存器单元实现,具体包括:
A、将两个寄存器单元的值和一部分输入,进行非线性压缩运算,生成混淆步骤的输出;
B、对两个寄存器的值,分别用选择步骤剩余两部分输入进行运算生成两个中间结果;C、将两个中间结果进行线性混合,得到两个新的中间结果;
D、两个新的中间结果分别输入两个非线性变换单元,两个非线性变换单元的输出分别更新两个寄存器单元的值;
2-3)输出步骤,将混淆步骤的输出和选择步骤提供的输入按位异或得到一个字的密钥流;
2-4)对线性反馈移位寄存器状态进行更新。
3)产生的密钥流与要加密的消息的一个字按位异或,实现对这个消息字的加密;
4)重复步骤2)、3)实现对所有原始消息的加密,并将加密消息发送到消息接收方;
5)消息接收方拥有与加密密钥相同的解密密钥和初始向量,利用步骤1)对所有寄存器赋初值。
6)利用2)生成密钥流的方法,得到一个字的密钥流;
7)产生的密钥流与加密消息的一个字按位异或,实现对这个加密消息字的解密;
8)重复步骤6)、7)实现对加密消息的解密,得到原始消息。
9.如权利要求8所述的方法,其特征在于,所述步骤1)利用密钥扩展算法将加密密钥和初始向量装入线性反馈移位寄存器。
10.如权利要求8所述的方法,其特征在于,生成密钥流之前进行:
初始化操作为重复执行以下步骤若干次:
步骤2-1),步骤2-2),将混淆步骤的输出参与线性反馈移位寄存器的更新;
初始化之后运行一次步骤2),并丢弃输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910243258A CN101841415A (zh) | 2009-12-29 | 2009-12-29 | 一种面向字的密钥流生成方法及加密方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910243258A CN101841415A (zh) | 2009-12-29 | 2009-12-29 | 一种面向字的密钥流生成方法及加密方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101841415A true CN101841415A (zh) | 2010-09-22 |
Family
ID=42744556
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910243258A Pending CN101841415A (zh) | 2009-12-29 | 2009-12-29 | 一种面向字的密钥流生成方法及加密方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101841415A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102684870A (zh) * | 2012-04-26 | 2012-09-19 | 重庆重邮信科通信技术有限公司 | 祖冲之算法密钥生成装置及方法 |
CN103532706A (zh) * | 2012-07-03 | 2014-01-22 | 展讯通信(上海)有限公司 | 数据加解密方法、装置和移动终端 |
CN103634101A (zh) * | 2013-12-03 | 2014-03-12 | 中国电子器材总公司 | 加密处理方法及设备 |
CN103701591A (zh) * | 2013-12-23 | 2014-04-02 | 中国科学院数学与系统科学研究院 | 一种序列密码实现方法和密钥流生成方法及装置 |
CN104410490A (zh) * | 2014-12-16 | 2015-03-11 | 桂林电子科技大学 | 非线性挤压保护密码s盒的方法 |
CN104871476A (zh) * | 2013-01-11 | 2015-08-26 | 高通股份有限公司 | 用于可计算、大型、可变及安全的替换盒的方法及设备 |
CN110011798A (zh) * | 2019-04-08 | 2019-07-12 | 中国科学院软件研究所 | 一种zuc-256流密码算法的初始化方法和装置及通信方法 |
CN112615718A (zh) * | 2020-12-14 | 2021-04-06 | 中国电子科技集团公司第五十四研究所 | 一种基于哈希函数的序列密码加密系统密钥更新方法 |
-
2009
- 2009-12-29 CN CN200910243258A patent/CN101841415A/zh active Pending
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102684870A (zh) * | 2012-04-26 | 2012-09-19 | 重庆重邮信科通信技术有限公司 | 祖冲之算法密钥生成装置及方法 |
CN103532706A (zh) * | 2012-07-03 | 2014-01-22 | 展讯通信(上海)有限公司 | 数据加解密方法、装置和移动终端 |
CN103532706B (zh) * | 2012-07-03 | 2017-03-29 | 展讯通信(上海)有限公司 | 数据加解密方法、装置和移动终端 |
CN104871476A (zh) * | 2013-01-11 | 2015-08-26 | 高通股份有限公司 | 用于可计算、大型、可变及安全的替换盒的方法及设备 |
US10142099B2 (en) | 2013-01-11 | 2018-11-27 | Qualcomm Incorporated | Method and apparatus for a computable, large, variable and secure substitution box |
CN103634101A (zh) * | 2013-12-03 | 2014-03-12 | 中国电子器材总公司 | 加密处理方法及设备 |
CN103701591A (zh) * | 2013-12-23 | 2014-04-02 | 中国科学院数学与系统科学研究院 | 一种序列密码实现方法和密钥流生成方法及装置 |
CN103701591B (zh) * | 2013-12-23 | 2016-08-31 | 中国科学院数学与系统科学研究院 | 一种序列密码实现方法和密钥流生成方法及装置 |
CN104410490A (zh) * | 2014-12-16 | 2015-03-11 | 桂林电子科技大学 | 非线性挤压保护密码s盒的方法 |
CN110011798A (zh) * | 2019-04-08 | 2019-07-12 | 中国科学院软件研究所 | 一种zuc-256流密码算法的初始化方法和装置及通信方法 |
CN112615718A (zh) * | 2020-12-14 | 2021-04-06 | 中国电子科技集团公司第五十四研究所 | 一种基于哈希函数的序列密码加密系统密钥更新方法 |
CN112615718B (zh) * | 2020-12-14 | 2022-09-02 | 中国电子科技集团公司第五十四研究所 | 一种基于哈希函数的序列密码加密系统密钥更新方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101764686B (zh) | 一种用于网络与信息安全的加密方法 | |
CN101841415A (zh) | 一种面向字的密钥流生成方法及加密方法 | |
CN102185692B (zh) | 基于aes加密算法的多模式可重构加密方法 | |
CN101938351B (zh) | 一种实现分组密码加密的密钥扩展方法 | |
CN101826959B (zh) | 一种面向字节的密钥流生成方法及加密方法 | |
CN101848081A (zh) | 一种s盒构造方法及s盒 | |
CN109861809A (zh) | 一种实用化的分组随机加解密方法 | |
CN103346875A (zh) | 混沌保密通信系统中数字混沌密码的产生方法 | |
Wu et al. | Dynamic and implicit latin square doubly stochastic s-boxes with reversibility | |
CN101783728B (zh) | 隐藏域上遍历矩阵的公钥加密方法 | |
CN101179375B (zh) | 基于混沌算法的网络数据加密卡 | |
CN100459493C (zh) | 流密码生成器、随机数生成方法、加密系统及加密方法 | |
CN107733634A (zh) | 一种基于置换耦合的轻量化混沌认证加密方法 | |
CN108270565A (zh) | 一种数据混合加密方法 | |
CN103220130A (zh) | 数字混沌保密通信的加密及解密方法 | |
Zhao | DES-Co-RSA: a hybrid encryption algorithm based on DES and RSA | |
CN106921486A (zh) | 数据加密的方法和装置 | |
CN116318669A (zh) | 一种基于窄带物联网的轻量级加密方法 | |
CN101848079B (zh) | 一种面向字、带记忆的序列扰动方法及加密方法 | |
CN105099693A (zh) | 一种传输方法及传输装置 | |
CN101938352A (zh) | 一种分组密码软件加密方法 | |
CN108494556A (zh) | 一种高效的rsa算法加密元数据文件的方法 | |
CN103297221B (zh) | 基于数字混沌编码算法的混沌保密通信系统 | |
CN103731257A (zh) | 一种Piccolo加密算法硬件实现方法 | |
Barrera et al. | Improved mix column computation of cryptographic AES |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |
Open date: 20100922 |