什么是凱撒加密?
在密碼學中,愷撒密碼(英語: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)