?? 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 + -