vigenere.m

来自「现代密码学 MATLAB 维吉尼亚 加密方法 古典密码体制 经典加密算法」· M 代码 · 共 35 行

M
35
字号
%实现Vigenere体制简单多表加法密码
clear;
clc;
A='abcdefghijklmnopqrstuvwxyz';%对英文字母与整数集建立一一对应关系,每一个字母对应其下标
m=input('输入密钥:','s');%设置密钥,存入字符数组m

%得到密钥对应的编码
for i=1:size(m,2)
    C(i)=findstr(m(i),A);
end

xx=input('输入明文:','s');%提示用户输入要加密的明文,将明文存入xx中

%以下对明文进行加密
mm=0;%作为标记,记录输入明文的空格,以便加密
for i=1:size(xx,2)
    if findstr(xx(i),A)
        x=C(mod(i-mm-1,size(C,2))+1);
        y=findstr(xx(i),A);
        miwen(i-mm)=A(mod(x+y-2,26)+1);
    else
        mm=mm+1;
    end
end
['密文为:' miwen]

%对密文进行解密
yy=input('输入密文','s');
yy=lower(yy);
for i=1:size(yy,2)
    x=C(mod(i-1,size(C,2))+1);
    y=findstr(yy(i),A);
    mingwen(i)=A(mod(y-1-x+2-1,26)+1);
end
['明文为:' mingwen]

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?