基于线性移位寄存器的流密码算法与实现 联系客服

发布时间 : 星期四 文章基于线性移位寄存器的流密码算法与实现更新完毕开始阅读c45c2a9b84868762caaed53c

深圳大学本科毕业论文—基于线性移位寄存器的流密码算法与实现

4.2 加密流程图

对函数进行定义,array1,array2,array3,array4,array5?? 矩阵转换为(256,256) lfsr1,lfsr2,lfsr3,lfsr4,lfsr5工作(1,256*256) 进行异或运算 lfsr1,lfsr2,lfsr3组成的geffe生成器工作 coord_1矩阵转换为(256,256) 上一个geffe的输出与lfsr4,lfsr5组成geffe生成器工作 合成新的密钥矩阵coord_1(1,256*256) 生成最终加密矩阵key(i,j) 读取图像teddy的灰度矩阵z(256,256) 加密矩阵与图像灰度矩阵异或运算 加密完成

图8 加密流程图

4.3 加密步骤

①对所有下面加密图像中将要用到的矩阵进行定义,并给定5个LFSR的初始密钥流。 %LFSR1 级数41

第 14 页 共 32 页

深圳大学本科毕业论文—基于线性移位寄存器的流密码算法与实现

array1=

[51,49,196,63,12,34,153,158,20,105,89,89,12,47,15,35,15,156,123,123,78,96,125,78,123,15,13,23,34,133,26,48,42,16,13,28,38,69,66,123,215]; %LFSR2 级数18

array2 = [105,89,89,12,47,15,35,15,156,123,123,78,96,123,121,154,21,19]; %LFSR3 级数35

array3=

[142,152,18,125,22,85,71,11,73,12,63,12,86,152,31,82,56,96,13,68,12,58,62,23,48,32,156,45,15,156,52,72,8,6,132]; %LFSR4 级数17

array4 = [47,15,35,112,63,12,158,152,31,156,45,15,156,15,35,15,156]; %LFSR5 级数7

array5 = [34,153,158,20,35,15,26];

N = 256*256 lfsr1 = zeros(1,N); lfsr2 = zeros(1,N); lfsr3 = zeros(1,N); lfsr4 = zeros(1,N); lfsr5 = zeros(1,N); coord_0 = zeros(1,N); temp = zeros(1,N);

②读取所要加密的图像teddy的灰度矩阵并且显示出原始图像: %%读图%%

z=imread('D:\\MATLAB7\\teddy.jpg'); subplot(1,3,1),imshow(z); title('teddy原始图像');

第 15 页 共 32 页

深圳大学本科毕业论文—基于线性移位寄存器的流密码算法与实现

图9 teddy原始图像

③由于LFSR1、LFSR2和LFSR3最先开始工作,故将这3个LFSR的初始array矩阵分别进入各自的LFSR中,进行线性移位处理,下面举其中的LFSR1为例: %LFSR1 级数41

array1 =

[51,49,196,63,12,34,153,158,20,105,89,89,12,47,15,35,15,156,123,123,78,96,125,78,123,15,13,23,34,133,26,48,42,16,13,28,38,69,66,123,215]; %LFSR2 级数18

array2 =

[105,89,89,12,47,15,35,15,156,123,123,78,96,123,121,154,21,19]; %LFSR3 级数35 array3 =

[142,152,18,125,22,85,71,11,73,12,63,12,86,152,31,82,56,96,13,68,12,58,62,23,48,32,156,45,15,156,52,72,8,6,132]; %LFSR4 级数17

array4 = [47,15,35,112,63,12,158,152,31,156,45,15,156,15,35,15,156]; %LFSR5 级数7

array5 = [34,153,158,20,35,15,26];

N = 256*256

第 16 页 共 32 页

深圳大学本科毕业论文—基于线性移位寄存器的流密码算法与实现

lfsr1 = zeros(1,N); lfsr2 = zeros(1,N); lfsr3 = zeros(1,N); lfsr4 = zeros(1,N); lfsr5 = zeros(1,N); temp1 = zeros(1,N); temp2 = zeros(1,N);

%%%%%%% LFSR1工作 %%%%%%% for i = 1 : N lfsr1(i) = array1(1);

a = bitxor(array1(3),array1(41)); for m = 1 : 40

array1(m) = array1(m+1); end if a<=255 array1(41) = a; else

array1(41) = mod(a,255); end end

%将LFSR1输出密钥序列放入x*y维矩阵中 c1 = zeros(256,256); for i = 1 : 256 for j = 1 : 256

c1(i,j) = lfsr1((i-1)*256+j); end end

④由LFSR1、LFSR2和LFSR3组成geffe序列生成器,把结果放入coord_0(1,256*256)

第 17 页 共 32 页