您的位置:首页 > Web前端 > JavaScript

ROT13密码

2017-01-03 21:49 204 查看


ROT13密码

移位密码:密码中的字母会按照指定的数量来做移位。

一个常见的案例就是ROT13密码,字母会移位13个位置。由'A' ↔ 'N', 'B' ↔ 'O',以此类推。

写一个ROT13函数,实现输入加密字符串,输出解密字符串。

所有的字母都是大写,不要转化任何非字母形式的字符(例如:空格,标点符号),遇到这些特殊字符,跳过它们。

分析:大写字母"A"的unicode码为65,同理“Z”—— 90,“M”—— 77。

          任何非字母形式的字符,不需要转换,直接存入数组

          后13个大写字母,其unicode码减去13后通过String.fromCharCode()转换后,存入数组中

          前13个大写字母,其unicode码加上13后通过String.fromCharCode()转换后,存入数组中

 
        最后将数组转换成字符串即可

 
      String.fromCharCode() 静态方法根据指定的
Unicode 编码中的序号值来返回一个字符串。

 
      String.
charCodeAt()
 方法返回0到65535之间的整数,代表索引处字符的UTF-16编码单元(在Unicode编码单元表示一个单一的UTF-16编码单元的情况下,UTF-16编码单元匹配Unicode编码单元。

 
     function rot13(str) { 

         var newarr = [];

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

           if(str.charCodeAt(i) < 65 || str.charCodeAt(i) > 90){

             newarr.push(str.charAt(i));

             // 非字母形式的字符,直接跳过,存入数组newarr中

           }

          else if(str.charCodeAt(i) > 77){

            newarr.push(String.fromCharCode(str.charCodeAt(i) - 13));

            // 77 —— 第13个大写字母“M”

            // 后13个大写字母,减去13

          }else{

            newarr.push(String.fromCharCode(str.charCodeAt(i) + 13));

            // 前13个大写字母,加上13 

          }

        }

        return newarr.join("");

     }

     rot13("SERR PBQR PNZC");

 
                                                                                                                                          ——FreeCodeCamp269《Caesars Cipher》



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JavaScript 算法