FreeCodeCamp之凯撒密码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FreeCodeCamp之凯撒密码相关的知识,希望对你有一定的参考价值。

下面我们来介绍风靡全球的凯撒密码Caesar cipher,又叫移位密码。移位密码也就是密码中的字母会按照指定的数量来做移位。一个常见的案例就是ROT13密码,字母会移位13个位置。由‘A‘ ? ‘N‘, ‘B‘ ? ‘O‘,以此类推。

学习使用String.fromCharCode()和string.charCodeAt()注意第一个为静态方法,不能定义一个字符串然后使用他,像这样myStr.fromCharCode();是错误的,只能是String.fromCharCode(number1,number2,number3....),第一字母大写,返回的是numbers对应的Unicode字符。而string.charCodeAt(字符);正常使用,返回的是字符对应的Unicode值。对于本例字符串对应值如下:

A 65 B 66 C 67 D 68 E 69 F 70G 71 H 72 I 73 J 74 K 75 L 76 M 77 N 78 O 79 P 80Q 81 R 82 S 83 T 84 U 85 V 86 W 87 X 88 Y 89 Z 90

a 97 b 98 c 99 d 100 e 101 f 102 g 103 h 104 i 105 j 106 k 107 l 108 m 109 n 110o 111 p 112 q 113 r 114 s 115 t 116 u 117 v 118 w 119 x 120y 121 z 122 按照要求移位13位,先获取给定字符串的值,存入参数numbers   for(i=0;i<str.length;i++){var numbers=str.charCodeAt(i);}    对于大写字母,小于77的对于小写字母大于96小于110的都是加13,对于大于77小于91或者大于110小于123的都是-13,而位于65以下,122以上的都是其他字符直接返回numbers即可。最后获得的是一个数组newStr,还需要使用join方法,还原成字符串。

 

function rot13(str) { 
       var newStr=[];

       for(i=0;i<str.length;i++){

              numbers=str.charCodeAt(i);
             if(numbers<65||numbers>122){
                     newStr.push(String.fromCharCode(numbers));
             }else if((77<numbers&&numbers<91)||numbers>110){
                    newStr.push(String.fromCharCode(numbers-13));
            }else {
                    newStr.push(String.fromCharCode(numbers+13));
            }

       }return newStr.join("");

}

 

以上是关于FreeCodeCamp之凯撒密码的主要内容,如果未能解决你的问题,请参考以下文章

凯撒密码实现英文短句的加解密

求密文(凯撒密码)

jmu-python-凯撒密码加密算法,谢谢

python-凯撒密码加解密

凯撒移位密码

凯撒简单替换维吉尼亚密码 CRC 破解