DES加密matlab实现_精品文档Word文档下载推荐.docx

上传人:b****2 文档编号:13874850 上传时间:2022-10-14 格式:DOCX 页数:12 大小:32.03KB
下载 相关 举报
DES加密matlab实现_精品文档Word文档下载推荐.docx_第1页
第1页 / 共12页
DES加密matlab实现_精品文档Word文档下载推荐.docx_第2页
第2页 / 共12页
DES加密matlab实现_精品文档Word文档下载推荐.docx_第3页
第3页 / 共12页
DES加密matlab实现_精品文档Word文档下载推荐.docx_第4页
第4页 / 共12页
DES加密matlab实现_精品文档Word文档下载推荐.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

DES加密matlab实现_精品文档Word文档下载推荐.docx

《DES加密matlab实现_精品文档Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《DES加密matlab实现_精品文档Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。

DES加密matlab实现_精品文档Word文档下载推荐.docx

Text=cha2bit(Text_in);

%%===producingthesubciphercode(48bit)===

%==PC-1==

k=PC1(key);

%functionPC1()在后面定义,做PC1置换,生成56位的有效密钥

%==循环生成子密钥==

sub_k=zeros(16,48);

%保存所有的子密钥

%把有效密钥均分为两份

L=k(1:

28);

R=k(29:

56);

fori=1:

16

n=LS(i);

%获得每次循环的左循环移位的次数

%左循环移位

L=l_bitmov(L,LS(i));

%functionbitmov()在后面定义,左循环移位

R=l_bitmov(R,LS(i));

%PC-2置换

k=[L,R];

sub_k(i,:

)=PC2(k);

end

%sub_k%==testcode==

%%===DES===

%==初始IP置换==

Text=IP(Text);

%functionIP()在后面定义,IP置换

%==feistel==

L=zeros(1,32);

R=zeros(1,32);

32%明文均分成两份

L(i)=Text(i);

R(i)=Text(i+32);

tmp=E(R);

%funcitonE()在后面定义,E-扩展,得48bitR

tmp=bitxor(tmp,sub_k(i,:

));

%functionbitxor()是matlab内建函数,异或运算,RK的异或运算,得48bit

tmp=S(tmp);

%funcitonS()在后面定义,S-盒,得32bit

tmp=P(tmp);

%funcitonp()在后面定义,P置换,得32bit

tmp=bitxor(L,tmp);

%LF(R,K)的异或运算,得32bit

L=R;

R=tmp;

%==IP逆置换==

k=[R,L];

%交换LR

Text_out=IP_1(k);

%functionIP_1()在后面定义,IP逆置换

%%===output===

%==binary==

Text_o='

;

n=length(Text_out);

fori=1:

n%转化为字符输出

Text_o=[Text_o,num2str(Text_out(i))];

end

Text_o

bin2hex(Text_o)%functionbin2hex()在后面定义,把二进制转为十六进制

%cha2bit():

是functionm文件

function[bin,out16]=cha2bit(str)

%function:

汉字转换为二进制和十六进制

%str:

thecharacter

%binorhex:

thecodeofGB2312

str=unicode2native(str,'

GB2312'

%编码转换,把unicode转为GB2312

str=dec2hex(str);

%functiondec2hex(),matlab内建函数,十进制转为十六进制

bin='

len=length(str);

fori=1:

len%对十六进制重排列,方便运算,保存到bin

bin=[bin,str(i),str(len+i)];

tmp=bin;

%16进制

if(1==nargout)

bin=hex2bin(bin);

%functionhex2bin()在后面定义,16进制转换为2进制

elseif(2==nargout)

out16=tmp;

else

hex2bin(bin)

end

%hex2bin():

是functionm文件

function[S]=hex2bin(str)

%十六进制转为二进制

%strisachar

%Sisachar

%%===

S='

len

switchstr(i)

case'

0'

S=[S,'

0000'

];

1'

0001'

2'

0010'

3'

0011'

4'

0100'

5'

0101'

6'

0110'

7'

0111'

8'

1000'

9'

1001'

case{'

A'

'

a'

}

1010'

B'

b'

1011'

C'

c'

1100'

D'

1101'

E'

e'

1110'

F'

f'

1111'

otherwise

disp('

错误:

hex2bin输入错误!

return;

end

%bin2hex():

function[hex]=bin2hex(str)

%2进制to16进制

if(mod(length(str),4)~=0)

disp('

输入错误!

);

hex='

len=length(str)/4;

switchstr((i-1)*4+1:

i*4)

case'

hex=[hex,'

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1