DES算法matlab代码.doc
文本预览下载声明
%function C=DES(M,K)
%% ---------------------------------------------------------------
% 数据加密标准DES算法的Matlab实现
% 输入明文M和密钥K用16进制数表示,字符串格式
%--------------------------------------------------------------------------
%% ---------------第一步:数据初始化--------------------------------
%以字符串形式输入的明文转换成01数字串
M=123456ABCD132536;
MB=[];
for i=1:16
Mi=M(i);
MBi=[0000,dec2bin(hex2dec(Mi))];
MBi=MBi(end-3:end);
MBi=[str2num(MBi(1)),str2num(MBi(2)),str2num(MBi(3)),str2num(MBi(4))];
MB=[MB,MBi];
end
M=MB;
%以字符串形式将输入的密钥转化成01数字串
KB=[];
K=AABCDD;
for i=1:16
Ki=K(i);
KBi=[0000,dec2bin(hex2dec(Ki))];
KBi=KBi(end-3:end);
KBi=[str2num(KBi(1)),str2num(KBi(2)),str2num(KBi(3)),str2num(KBi(4))];
KB=[KB,KBi];
end
K=KB;
E=[32, 1, 2, 3, 4, 5;
4, 5, 6, 7, 8, 9;
8, 9,10,11,12,13;
12,13,14,15,16,17;
16,17,18,19,20,21;
20,21,22,23,24,25;
24,25,26,27,28,29;
28,29,30,31,32,1];%将32比特变成48比特的扩展换位表,如课本表6-2
S1=[14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7;
0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8;
4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0;
15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13];
S2=[15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10;
3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5;
0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15;
13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9];
S3=[10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8;
13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1;
13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7;
1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12];
S4=[7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15;
13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9;
10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4;
3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14];
S5=[2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9;
14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6;
显示全部