今天写一个凯撒密码的程序:
function rot13(str) {
var key = 13;
var resultNum = [];
for (var i = 0; i < str.length; i++) {
var num = str.charCodeAt(i);
var tempNum = 0;
if (num >= 65 && num <= 90) {
tempNum = (num - 65 + key) % 26 + 65;
} else if (num >= 97 && num <= 122) {
tempNum = (num - 97 + key) % 26 + 97;
} else {
tempNum = num;
}
resultNum.push(tempNum);
}
var result = "";
for (var j = 0; j < resultNum.length; j++) {
var test = resultNum[j];
var tempStr = String.fromCharCode(resultNum[j]);
result += tempStr;
}
return result;
}
rot13("SERR PBQR PNZC");
字母的ASCII码表:
这个程序有两点需要注意的:
1. a到z、A到Z的ASCII码不是连续的,中间有其他字符。
2. 字母移位需要用到“余数"。每个字母都可以看成“自首字母移n位后的一个字母”,a在a的基础上移了0位,b在a的基础上移了1位...