MATLAB实现DES算法子密钥生成

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
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值