使用javascript编写简单的加密解密
加密: str 是需要加密的字符串,key是需要加密的秘钥,秘钥中的字符不能重复
function enc(str,key) {
var length = key.length;
var keyList = key.split("");
var s="",bit,bit1,bit2,bit3,bit4;
for(var i = 0;i<str.length;i++){
bit = str.charCodeAt(i); //获得字符的Unicode 编码(数字)
bit1=bit%length;
bit=(bit-bit1)/length;
bit2=bit%length;
bit=(bit-bit2)/length;
bit3=bit%length;
bit=(bit-bit3)/length;
bit4=bit%length;
//bit1,bit2,bit3,bit4 key秘钥的位置
//keyList[bit4]+keyList[bit3]+keyList[bit2]+keyList[bit1] 将str中的每一个字符对应秘钥的四个字符
s+=keyList[bit4]+keyList[bit3]+keyList[bit2]+keyList[bit1];
}
return s;
}
console.log(enc(“zhangshihai”,“zsh123456”));
解密:
str 加密后的字符串,key 是秘钥与加密key一致
function dec(str,key) {
var length = key.length;
var bit,bit1,bit2,bit3,bit4,j=0,s;
var s = new Array(Math.floor(str.length/4));
var result =[];
bit = s.length;
for(var i=0;i<bit;i++){
bit1 = key.indexOf(str.charAt(j));
j++;
bit2 = key.indexOf(str.charAt(j));
j++;
bit3 = key.indexOf(str.charAt(j));
j++;
bit4 = key.indexOf(str.charAt(j));
j++;
//bit1,bit2,bit3,bit4 每四个秘钥字符的位置 对应的是str的一个字符
s[i]=bit1*length*length*length+bit2*length*length+bit3*length+bit4;
//bit1*length*length*length+bit2*length*length+bit3*length+bit4还原str每个字符的Unicode 编码
result.push(String.fromCharCode(s[i])); //将Unicode 编码还原数据
}
//还原字符
return result.join("");
}
原理:加密的计算Unicode 编码,每个字符用秘钥的四个字符代理,解密的时候将获得对应的原数据的Unicode 编码数据,然后还原数据
console.log(dec(“zs23zsh3zss5zs1hzsh2zs15zsh3zsh4zsh3zss5zsh4”,“zsh123456”));
结果: