📄 encode.m
字号:
%加密函数,encoderesult为加密后的密文,str为明文,(e,n)为公钥
function encoderesult=Encode(str,e,n)
%将明文中的每个字符转化成对应的ASCII码
s=abs(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中每个元素减47
for i=1:length(str)
s(i)=s(i)-47;
end
%将结果置空
encoderesult='';
%对明文进行加密
%如果明文长度为偶数,则按两位一组进行分组编码,每个字符对应的编码为其对应的ASCII码减47再在前面补0,补满m位;
%否则,在明文末尾加校验字符~,补充为偶数长度,再进行编码
if(mod(length(str),2)==0)
for i=1:2:length(str)-1
temp1=10^m*s(i)+s(i+1);
temp2=pow(temp1,e,n);
s1=num2str((temp2-mod(temp2,10^m))/10^m);
if(m>length(s1))
for j=1:(m-length(s1))
s1=strcat('0',s1);
end
end
encoderesult=strcat(encoderesult,s1);
s2=num2str(mod(temp2,10^m));
if(m>length(s2))
for j=1;(m-length(s2))
s2=strcat('0',s2);
end
end
encoderesult=strcat(encoderesult,s2);
end
else
str=strcat(str,'~');
encoderesult=Encode(str,e,n);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -