什么是凱撒加密胯努?
在密碼學(xué)中牢裳,愷撒密碼(英語:Caesar cipher),或稱愷撒加密叶沛、愷撒變換蒲讯、變換加密,是一種最簡單且最廣為人知的加密技術(shù)灰署。它是一種替換加密的技術(shù)判帮,明文中的所有字母都在字母表上向后(或向前)按照一個固定數(shù)目進(jìn)行偏移后被替換成密文。例如溉箕,當(dāng)偏移量是3的時候晦墙,所有的字母A將被替換成D,B變成E肴茄,以此類推晌畅。這個加密方法是以羅馬共和時期愷撒的名字命名的,當(dāng)年愷撒曾用此方法與其將軍們進(jìn)行聯(lián)系独郎。
為什么用它踩麦?
Just for fun!!!
什么人用它?
- Male Coder?
- Formale Coder?
- Someone interesting 氓癌?
怎么用谓谦?
許多方法,可以直接Google下贪婉。我這里用JavaScript方法來完成
- 第一步:打開Google游覽器
- 右鍵點擊空白頁面反粥,出現(xiàn)東西
- 點擊最下邊的檢查:
- 把代碼復(fù)制到本地文檔,然后修改62行input里的內(nèi)容就ok了疲迂。
- 把我的代碼復(fù)制到左邊紅色箭頭的位置才顿,然后按下Enter
下面是加密的代碼
// 定義我們的 log 函數(shù)
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'
// 這是加密后的結(jié)果尤蒿,后邊的那個60你可以換成任意的數(shù)字
var jiaMiResult = jiaMi(input, 60)
// 下面是展示加密后和解密后的例子
log('你說的話', input)
log('加密后的話', jiaMiResult)
解密的代碼
// 定義我們的 log 函數(shù)
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必須和加密方的數(shù)字一致郑气,記得解密前詢問對方數(shù)字是多少
var jiemiResult = jieMi(input, 60)
log('加密后的話', input)
log('解密已經(jīng)加密的話', jiemiResult)