在很多情况下有些关键信息,特别是密码、邮件、网址等字母数字混合型字符串在网际传播时具有隐私泄漏的风险。为了对敏感信息进行预先的加密然后通过密钥进行反向运算从而解密。本方法是对古典加法密码的一种改进,通过利用幻方矩阵元素的特有性质对原始信息进行独特二次编码。 |
加密对象 加密对象为a-z、A-Z、0-9共计62个字符,通过一定各外部参数(密钥)的输入确定加密/解密的法则。 |
密钥参数 参数1:三大块不连续符号区块(ASCII吗)构成一个线性表,参数1可以确定三大块线性排列的收尾相接顺序。 参数2:确定生成幻方矩阵的维数n,n>inputStr.length。 参数3:确定截取子矩阵的起始位置。 参数4:确定行\列选取方式 参数5:确定具体的行(列)号 |
作用机理 |
实际效果 Demo 数字字母混合型密码 明文:made864OK 密钥2@4K |
核心代码 |
function outcharInds=encryption(proCharInds,selp,seln,selWay)
%²ÎÊý˵Ã÷ outchar ΪÊä³öµÄ×Ö·ûASCII
% Table Ϊ³ÌÐòÐγɵÄÂë±í
% proCharInd Ϊ´ý´¦Àí×Ö·û
% selp Ϊ Ñ¡ÔñÐл¹ÊÇÁÐ0ÐÐ 1ÁÐ
% seln Ñ¡ÔñÐÐ/ÁÐÊý
% selWay ²éѯ·½Ê½1...ÕýÏò²éѯ(¼ÓÃÜ),0...½âÃÜ
n=length(proCharInds);
M=magic(62);
%È«²¿×ª»»³ÉÐÐÏòÁ¿
if selp==0
m=M(seln,:);
elseif selp==1
m=M(:,seln)';
end
[~,mInd]=sort(m);
outcharInds=zeros(n,1);
if selWay==0
for i=1:1:n
if(isempty(find(proCharInds(i)==mInd))) %¿´ÊÇ·ñΪ¿Õ,Èç¹û1Ϊ¿Õ
outcharInds(i)= proCharInds(i);
else
outcharInds(i)=find(proCharInds(i)==mInd);
end
end
elseif selWay==1 %ÄæÏò²éѯ
for i=1:1:n
if(proCharInds(i)+1)<0
outcharInds(i)= proCharInds(i);
else
outcharInds(i)=mInd(proCharInds(i));
end
end
end
咨询电话
0371-68632068