⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gerki.m

📁 运用matlab实现DES加密解密
💻 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 + -