• 大小:
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-05-15
  • 语言: Matlab
  • 标签: MATLAB  两轮加密  

资源简介

MATLAB 实现转轮机加密与解密

资源截图

代码片段和文件信息

function P=dezhuanlun(C)%P为明文,C为密文
lun1a=[1234567891011121314151617181920212223242526];
lun1b=[2122345167891011121314256171819201223242615];
lun2a=[2526123456789101112131415161718192021222324];
lun2b=[2324261781910212214251615718962011123413512];
zimu=[‘A‘‘B‘‘C‘‘D‘‘E‘‘F‘‘G‘‘H‘‘I‘‘J‘‘K‘‘L‘‘M‘‘N‘‘O‘‘P‘‘Q‘‘R‘‘S‘‘T‘‘U‘‘V‘‘W‘‘X‘‘Y‘‘Z‘];
L=length(C);
lun2a=circshift(lun2a[0mod(L26)-1]);%推算出加密后的转轮
lun2b=circshift(lun2b[0mod(L26)-1]);
lun1a=circshift(lun1a[0floor(L/26)]);
lun1b=circshift(lun1b[0floor(L/26)]);
for i=L:-1:1
    for j=1:26
       if C(i)==zimu(j)
           m=j;%记录下来对应的是哪个字母
       end
    end
    for d=1:26
            if lun2a(d)==lun2b(m)
                k=d;%记录下第1轮右侧对应的位置
            end
    end
    for x=1:26
        if lun1a(x)==lun1b(k)
           r=x;%记录下第一轮右侧的位置
        end
    end
    P(i)=zimu(r);
    lun2a=circshift(lun2a[0-1]);%每进行一次齿轮2回转一次
    lun2b=circshift(lun2b[0-1]);
    if mod(i26)==0%齿轮2每回转动26次,齿轮1转回转一次
        lun1a=circshift(lun1a[0-1]);
        lun1b=circshift(lun1b[0-1]);
    end
end

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-11-01 16:04  转轮机\
     文件        1286  2018-10-26 09:38  转轮机\dezhuanlun.m
     文件         175  2018-10-26 09:31  转轮机\testzhuanlun.m
     文件        1084  2018-10-23 20:19  转轮机\zhuanlun.m

评论

共有 条评论