Caesars Cipher(凯撒密码、移位密码)

  1. 要求

    • 字母会按照指定的数量来做移位。
    • 一个常见的案例就是ROT13密码,字母会移位13个位置。由'A' ↔ 'N', 'B' ↔ 'O',以此类推。
    • 写一个ROT13函数,实现输入加密字符串,输出解密字符串。
    • 所有的字母都是大写,不要转化任何非字母形式的字符(例如:空格,标点符号),遇到这些特殊字符,跳过它们。
  2. 思路
    • 将输入字符串分割成二维数组(一维由空格分开,二维分隔单个字符)
    • 在for循环遍历数组所有元素,利用.charCodeAt()判断各个元素的 UTF-16 代码单元值的数字的范围,对其.charCodeAt()进行+/- 13操作或者不进行操作
    • 利用String.fromCharCode()返回加密后的数组,最后用.join()将数组元素拼接成加密后的字符串
  3. 代码
    •  function rot13(str) { // LBH QVQ VG!
      // 请把你的代码写在这里
      var temp = str;
      temp = temp.split(' ');
      for (var i = 0;i < temp.length;i++){
      temp[i] = temp[i].split('');
      }
      var code = temp;
      for (var j =0;j < temp.length;j++){
      for (var k = 0;k < temp[j].length;k++){
      if(temp[j][k].charCodeAt() <= 77 && temp[j][k].charCodeAt() >= 65){
      code[j][k] = temp[j][k].charCodeAt() + 13;
      }
      else if (temp[j][k].charCodeAt() > 77 && temp[j][k].charCodeAt() < 91)
      {code[j][k] = temp[j][k].charCodeAt() - 13;
      }
      else {code[j][k] = temp[j][k].charCodeAt();}
      code[j][k] = String.fromCharCode(code[j][k]);
      }
      }
      for (var l = 0;l < code.length;l++){
      code[l] = code[l].join('');
      }
      code = code.join(' ');
      return code;
      } rot13("SERR PBQR PNZC"); // 你可以修改这一行来测试你的代码
  4. 相关链接
    • 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

最新文章

  1. vijos1910解方程
  2. mysql配置文件my.cnf详解
  3. C++ TrieTree(字典树)容器的实现
  4. .net 下的MVCPager
  5. Mvc设计模型与三层架构
  6. Java语言基础(六)char成员变量默认初始值 最简单的Java源文件 Java的main()方法
  7. 读书笔记之 - javascript 设计模式 - 代理模式
  8. AQS详解
  9. 轻量级C语言实现的minixml解析库入门教程
  10. c++:类中的static成员
  11. Design Pattern Memo 备忘录设计模式
  12. 信息存储——当值X是2的非负整数n次幂时,如何表示成十六进制
  13. F# 之旅(上)
  14. 51nod_1714:B君的游戏(博弈 sg打表)
  15. CSS3盒子模型
  16. 小程序 movable-view 在页面中的可移动图标
  17. Java环境变量PATH和CLASSPATH
  18. Linux sed使用方法
  19. IPv6技术详解:基本概念、应用现状、技术实践(下篇)
  20. Caffe 使用记录(一)mnist手写数字识别

热门文章

  1. django 数据库建表流程,与表结构
  2. LeetCode.908-最小差值 1(Smallest Range I)
  3. ZipUtils
  4. 线程池(2)Executors.newFixedThreadPool
  5. NET Core2
  6. iOS Runtime常用方法整理
  7. JVM类加载之创建对象的过程
  8. Java基础语法(Eclipse)
  9. webstorm增加内存配置参数
  10. 关于rabbitmq的消息路由的同步问题