什么是凯撒加密?
在密码学中,恺撒密码(英语:Caesar cipher),或称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。这个加密方法是以罗马共和时期恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。
为什么用它?
Just for fun!!!
什么人用它?
- Male Coder?
- Formale Coder?
- Someone interesting ?
怎么用?
许多方法,可以直接Google下。我这里用JavaScript方法来完成
- 第一步:打开Google游览器
- 右键点击空白页面,出现东西
- 点击最下边的检查:
- 把代码复制到本地文档,然后修改62行input里的内容就ok了。
- 把我的代码复制到左边红色箭头的位置,然后按下Enter
下面是加密的代码
// 定义我们的 log 函数
var log = console.log.bind(console)
var find = function(s1, s2) {
var index = -1
for (var i = 0; i < s1.length; i++) {
var n = s1[i]
if (n == s2) {
index = i
break
}
}
return index
}
// 加密
var jiaMi = function(s, shift) {
var lower = 'abcdefghijklmnopqrstuvwxyz'
var upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
var sum = lower + upper
var result = ''
for (var i = 0; i < s.length; i++) {
var n = s[i]
var index = find(sum, n)
if (index == -1) {
result += n
} else {
var len = sum.length
var newIndex = (index + shift) % len
result = result + sum[newIndex]
}
}
return result
}
// 这是你想加密的东西,记得把他们放在一对单引号里边
// 你直接改单引号里边的话就行
var input = 'sometimes I want to chat with you, but I have no reason to chat with you'
// 这是加密后的结果,后边的那个60你可以换成任意的数字
var jiaMiResult = jiaMi(input, 60)
// 下面是展示加密后和解密后的例子
log('你说的话', input)
log('加密后的话', jiaMiResult)
解密的代码
// 定义我们的 log 函数
var log = console.log.bind(console)
var find = function(s1, s2) {
var index = -1
for (var i = 0; i < s1.length; i++) {
var n = s1[i]
if (n == s2) {
index = i
break
}
}
return index
}
// 解密
var jieMi = function(s, shift) {
var lower = 'abcdefghijklmnopqrstuvwxyz'
var upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
var sum = lower + upper
var result = ''
for (var i = 0; i < s.length; i++) {
var n = s[i]
var index = find(sum, n)
if (index == -1) {
result += n
} else {
var len = sum.length
var newIndex = (len + index - shift) % len
result = result + sum[newIndex]
}
}
return result
}
// 这是你收到的加密后的话
// 你直接改单引号里边的话就行
// 小心:中间不能有空格
var input = 'AwumBqumA Q EivB Bw kpiB EqBp GwC, jCB Q piDm vw zmiAwv Bw kpiB EqBp GwC'
// 解密后的话
// 解密里的60必须和加密方的数字一致,记得解密前询问对方数字是多少
var jiemiResult = jieMi(input, 60)
log('加密后的话', input)
log('解密已经加密的话', jiemiResult)