凯撒密码

本文转载自: 杨建,转载请注明出处。
凯撒密码是位移变换。位移量可以自己定,比如约定A->B,B->C,。。。,Y->Z,Z->A这种位移为1的规则,也可以为其它。比如我和你之间是通过凯撒密码通信的,我问你:今天吃啥?你说:BQQMF。那我就知道你要吃:APPLE。哦,是苹果,当然我肯定不会和某人做这种约定,幻想自己是特工,意思 一下嘿嘿。

你可以做一个表格来对照明文和密文:

明文 A B … Z
密文 B C … A
或者是另一种规则:

明文 0 1 … 9
密文 1 2 … 0
拿到密文就对照着找到明文。但是这样规则一变就要重新做一张表格,好麻烦啊!

所以呢?写一个自动转换的,只要知道规则就可以根据密文输出明文,那多好啊!

function foo(steps,str,start,end) {
  var temp = "";
  for(var i = 0;i < str.length;i++) {
    temp += String.fromCharCode((str.charCodeAt(i)+steps-start.charCodeAt(0))%(end.charCodeAt(0)-start.charCodeAt(0)+1)+start.charCodeAt(0));
  }
  console.log(temp);
}
foo(1,"xyz","a","z");    //yza
foo(2,"fg","a","g");    //ab
foo(1,"678","0","8");    //780

我这个代码厉害喽,只要知道转换的步长、字符串、密码开始字符、密码结束字符,管它啥东西都可以转换。

代码应该很好理解,你把字符串看做一个圆盘的刻度,唯一要注意的就是求1-9的长度是9-1+1。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值