凯撒密码
2017-06-01 23:04
148 查看
本文转载自: 杨建,转载请注明出处。
凯撒密码是位移变换。位移量可以自己定,比如约定A->B,B->C,。。。,Y->Z,Z->A这种位移为1的规则,也可以为其它。比如我和你之间是通过凯撒密码通信的,我问你:今天吃啥?你说:BQQMF。那我就知道你要吃:APPLE。哦,是苹果,当然我肯定不会和某人做这种约定,幻想自己是特工,意思 一下嘿嘿。
你可以做一个表格来对照明文和密文:
明文 A B … Z
密文 B C … A
或者是另一种规则:
明文 0 1 … 9
密文 1 2 … 0
拿到密文就对照着找到明文。但是这样规则一变就要重新做一张表格,好麻烦啊!
所以呢?写一个自动转换的,只要知道规则就可以根据密文输出明文,那多好啊!
我这个代码厉害喽,只要知道转换的步长、字符串、密码开始字符、密码结束字符,管它啥东西都可以转换。
代码应该很好理解,你把字符串看做一个圆盘的刻度,唯一要注意的就是求1-9的长度是9-1+1。
凯撒密码是位移变换。位移量可以自己定,比如约定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。
相关文章推荐
- 凯撒密码
- python学习笔记[1]-凯撒密码
- Python HAIL CAESAR (凯撒密码) 2
- 凯撒密码
- Caesers Cipher (凯撒密码)
- 凯撒密码加密解密--JAVA实现(基础)
- 【每日一题(5)】密码(凯撒密码) FZU - 1489 (福州大学第四届程序设计竞赛题)
- 凯撒密码加密算法
- 凯撒密码
- Python HAIL CAESAR (凯撒密码) 3
- 凯撒密码
- java实现凯撒密码简单破解
- 凯撒密码加密解密--JAVA实现(基础)
- ZCMU1721on xh kd lh (凯撒密码)
- 凯撒密码和栅栏密码 - 密码学01
- 凯撒密码学习
- 凯撒密码
- Android实现信息安全中凯撒密码技术
- java解决凯撒密码问题
- Java学习之“凯撒密码”实例