📄 decode.m
字号:
%解密函数,decoderesult为解密后的明文,str为密文,(d,n)为密钥
function decoderesult=Decode(str,d,n)
%len为密文长度
len=length(str);
%l为n的位数
l=length(num2str(n));
%m为一个明文字符对应的密文编码位数,如果l为偶数,m为l的一半,否则m为l+1的一半
if(mod(l,2)==0)
m=l/2;
else
m=l/2+0.5;
end
%声明两个空串,做临时变量用
s='';
s1='';
%每次截取两个明文字符进行解密,并将结果连接起来
for i=1:m*2:len
for j=i:(m*2+i-1)
s1(j-i+1)=str(j);
end
t2=pow(str2num(s1),d,n);
s2=strcat(setstr((t2-mod(t2,10^m))/(10^m)+47),setstr((mod(t2,10^m)+47)));
s=strcat(s,s2);
end
%如果明文最后一个字符为校验字符~,则不要,否则直接返回
if s(length(s))==126
for i=1:length(s)-1
decoderesult(i)=s(i);
end
else
decoderesult=s;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -