📄 gerki.m
字号:
function ki=gerki(k)
%功能:实现des加密过程中从56位的K密钥产生16个48位Ki子密钥
%输入:k 56位长的行向量 存储56位主密钥K
% mt 矩阵 大小2*16 每轮循环左移位数表
% eg.
% mt=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16;1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1];
% 移位表第一行为轮数,第二行为第一行对应轮数左移的位数
% rt 一维向量 长度48 置换表
%输出:ki 16*48的矩阵存储16个48位子密钥,ki的第一行代表第一个子密钥,第二行代表第二个子密钥......
mt=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16;1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1];%移位表第一行为轮数,第二行为第一行对应轮数左移的位数
rt=[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];%56位到48位压缩置换表
kl=k(1:28);%k的左半部分
kr=k(29:56);%k的右半部分
for i=mt(1,1):mt(1,16)%进行16轮运算,产生16个子密钥
kl=mr(kl,mt(2,i));%mr根据移位表对k的左部分进行循环左移
kr=mr(kr,mt(2,i));%mr根据移位表对k的右部分进行循环左移
k=[kl kr];%进左移运算后的k
for j=1:48%根据压缩置换表产生子密钥
ki(i,j)=k(rt(j));
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -