DES算法子密钥生成
参考博客
添加链接描述的思路
MATLAB代码如下:
A=dec2bin(hex2dec('FEDCBA9876543210'));
pc1=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4];
CD=A(1:56);
for i=1:56
CD(i)=A(pc1(i));
end
C0=CD(1:28);
D0=CD(29:56);
CDK=cell(16,4);
CDK{1,1}=C0;
CDK{1,2}=D0;
n=[1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1];
for i=2:16
[CDK{i,3},CDK{i,1},CDK{i,2}] = zhihuan(CDK{i-1,1},CDK{i-1,2},n(i-1));
CDK{i,4}=dec2hex(bin2dec(CDK{i,3}));
end
function [K1,C1,D1] = zhihuan(C0,D0,n)
%UNTITLED 此处显示有关此函数的摘要
% 此处显示详细说明
C1=circshift(C0',-1*n)';%循环左移n位
D1=circshift(D0',-1*n)';
pc2=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32];
A1=[C1,D1];
K1=A1(1:48);
for i=1:48
K1(i)=A1(pc2(i));%子密钥1
end
end