码迷,mamicode.com
首页 > 其他好文 > 详细

FreeCodeCamp之凯撒密码

时间:2017-09-29 22:55:21      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:var   app   cipher   com   wrap   height   字符串   ...   入参   

下面我们来介绍风靡全球的凯撒密码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之凯撒密码

标签:var   app   cipher   com   wrap   height   字符串   ...   入参   

原文地址:http://www.cnblogs.com/skyyo/p/7612724.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!