Caesars Cipher(凯撒密码、移位密码)
- 要求
- 字母会按照指定的数量来做移位。
- 一个常见的案例就是ROT13密码,字母会移位13个位置。由'A' ↔ 'N', 'B' ↔ 'O',以此类推。
- 写一个ROT13函数,实现输入加密字符串,输出解密字符串。
- 所有的字母都是大写,不要转化任何非字母形式的字符(例如:空格,标点符号),遇到这些特殊字符,跳过它们。
- 思路
- 将输入字符串分割成二维数组(一维由空格分开,二维分隔单个字符)
- 在for循环遍历数组所有元素,利用.charCodeAt()判断各个元素的 UTF-16 代码单元值的数字的范围,对其.charCodeAt()进行+/- 13操作或者不进行操作
- 利用String.fromCharCode()返回加密后的数组,最后用.join()将数组元素拼接成加密后的字符串
- 代码
-
1 function rot13(str) { // LBH QVQ VG!
2 // 请把你的代码写在这里
3 var temp = str;
4 temp = temp.split(' ');
5 for (var i = 0;i < temp.length;i++){
6 temp[i] = temp[i].split('');
7 }
8 var code = temp;
9 for (var j =0;j < temp.length;j++){
10 for (var k = 0;k < temp[j].length;k++){
11 if(temp[j][k].charCodeAt() <= 77 && temp[j][k].charCodeAt() >= 65){
12 code[j][k] = temp[j][k].charCodeAt() + 13;
13 }
14 else if (temp[j][k].charCodeAt() > 77 && temp[j][k].charCodeAt() < 91)
15 {code[j][k] = temp[j][k].charCodeAt() - 13;
16 }
17 else {code[j][k] = temp[j][k].charCodeAt();}
18 code[j][k] = String.fromCharCode(code[j][k]);
19 }
20 }
21 for (var l = 0;l < code.length;l++){
22 code[l] = code[l].join('');
23 }
24 code = code.join(' ');
25 return code;
26 }
27
28 rot13("SERR PBQR PNZC"); // 你可以修改这一行来测试你的代码
- 相关链接
- http://www.baike.com/wiki/ROT13&prd=so_1_doc
- https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt
- https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode
转载于:https://www.cnblogs.com/ahswch/p/9297212.html