前两天看的凯撒加密方式,在网上查了下完善个方法
/**
* {String|str} 需要进行加密|解密的数据
* {num|number} 需要进行移动的位数,为非负数时内容进行加密,否则为解密
*/
function Caesar(str,num) {
var newStr = ""; //接收结果
var unit; //基础值
for(var i=0;i<str.length;i++){
if(str.charCodeAt(i)>=65&&str.charCodeAt(i)<=90){
//加密时内容为从前向后解析,解密时内容为从后向前解析,
// str.charCodeAt(i) + num 找到当前字符与移动位置后的ASII码位置
// (str.charCodeAt(i) + num - 65 + 26)%26 判断字符在26个字母中的最终位置
newStr += String.fromCharCode((str.charCodeAt(i) + num - 65 + 26)%26 + 65); //在ASII码中找到对应字符,并添加到将返回的字符中
}else if(str.charCodeAt(i)>=97&&str.charCodeAt(i)<=122){
//同上理
newStr += String.fromCharCode((str.charCodeAt(i) + num - 97 + 26)%26 + 97);
}else{
//特殊符号不做处理
newStr+=String.fromCharCode(str.charCodeAt(i));
}
}
console.log(newStr);
return newStr;
}