凱撒密碼和反密碼

在密碼學(xué)中腺阳,愷撒密碼是一種最簡單且最廣為人知的加密技術(shù)。它是一種替換加密的技術(shù),明文中的所有字母都在字母表上向后(或向前)按照一個(gè)固定數(shù)目進(jìn)行偏移后被替換成密文。

加密過程
1.從1到25決定一個(gè)數(shù)字為密鑰污它。保持這個(gè)密鑰的秘密!
2.找到明文字母的號碼庶弃。
3.添加密鑰數(shù)字到明文字母的號碼衫贬,生成一個(gè)數(shù)字。
4.如果這個(gè)數(shù)字大于26歇攻,減去26固惯。
5.找到你計(jì)算的數(shù)字對應(yīng)的字母。這就是密文缴守。
6.對明文中的每個(gè)字母重復(fù)步驟2

下圖描述了如何使用密鑰13加密“Hello. How are you?”葬毫。每個(gè)行都顯示了將左邊的明文字母轉(zhuǎn)到右側(cè)的密文的步驟。

加密

解密屡穗,減去密鑰數(shù)字贴捡,而不是添加它。對于密文B村砂,數(shù)字是1烂斋。減去1 - 13得到- 12。像我們的“減法26”加密規(guī)則础废,當(dāng)我們解密和結(jié)果是小于0汛骂,我們有一個(gè)“添加26”規(guī)則。- 12 + 26是14评腺。所以密文字母B解密回字母O帘瞭。

解密

雙強(qiáng)度加密

如果我們對“KITTEN”3鍵,得到的密文就是“nlwwhq”蒿讥。如果我們對“nlwwhq”4鍵蝶念,得到的密文,將“rpaalu”芋绸。但這與我們用“7”鍵一次加密“小貓”一詞是完全一樣的媒殉。我們的“雙”加密和普通加密是一樣的,所以它沒有更強(qiáng)的侥钳。
  對于大多數(shù)加密算法适袜,加密一次以上不提供額外的密碼強(qiáng)度。事實(shí)上舷夺,如果你用兩個(gè)加起來等于26的密鑰加密一些明文苦酱,你最終得到的密文和原來的明文是一樣的!

代碼實(shí)現(xiàn)

import string


# 凱撒加密
def encrypt(your_str, key):

    C = string.ascii_letters
    # 生成符號映射
    lc = [chr((i - 97) % 26 + 97) for i in range(97 + key, 123 + key)]
    uc = [chr((i - 65) % 26 + 65) for i in range(65 + key, 91 + key)]
    R = ''.join(lc) + ''.join(uc)

    # python3.2之前的maketrans使用string調(diào)用给猾,從3.2之后發(fā)生改變
    return your_str.translate(str.maketrans(C, R))


# 凱撒解密
def decrypt(your_str, key):

    C = string.ascii_letters
    # 生成符號映射
    lc = [chr((i - 97) % 26 + 97) for i in range(97 + key, 123 + key)]
    uc = [chr((i - 65) % 26 + 65) for i in range(65 + key, 91 + key)]
    R = ''.join(lc) + ''.join(uc)

    return your_str.translate(str.maketrans(R, C))


if __name__ == '__main__':
    plainText = 'hello world!'
    cipherText = encrypt(plainText, 7)
    print(cipherText)
    plainText = decrypt(cipherText, 7)
    print(plainText)

反密碼

反向密碼通過反向打印來加密消息疫萤。所以“Hello world!” 加密到“!dlrow olleH”。要解密敢伸,只需反轉(zhuǎn)反向消息即可得到原始消息扯饶。加密和解密步驟相同。這是一種非常脆弱的密碼。只要看它的密文尾序,你可以發(fā)現(xiàn)它只是相反的順序钓丰。 .syas ti tahw tuo erugif llits ylbaborp nac uoy ,detpyrcne si siht hguoht neve ,elpmaxe roF。

# Reverse Cipher

message = 'Three can keep a secret, if two of them are dead.'
translated = ''
i = len(message) - 1
while i >= 0:
print(translated)
    translated = translated + message[i]
    i = i - 1

這樣寫其實(shí)很不符合Python優(yōu)雅的特性每币,對代碼進(jìn)行大改造:

# Reverse Cipher

message = 'Three can keep a secret, if two of them are dead.'

def reverseDecrypt(str):
    return ''.join(reversed(message))

參考

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末携丁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子兰怠,更是在濱河造成了極大的恐慌梦鉴,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件揭保,死亡現(xiàn)場離奇詭異肥橙,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)秸侣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門存筏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人塔次,你說我怎么就攤上這事方篮。” “怎么了励负?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵藕溅,是天一觀的道長。 經(jīng)常有香客問我继榆,道長巾表,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任略吨,我火速辦了婚禮集币,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘翠忠。我一直安慰自己鞠苟,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布秽之。 她就那樣靜靜地躺著当娱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪考榨。 梳的紋絲不亂的頭發(fā)上跨细,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機(jī)與錄音河质,去河邊找鬼冀惭。 笑死震叙,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的散休。 我是一名探鬼主播媒楼,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼溃槐!你這毒婦竟也來了匣砖?” 一聲冷哼從身側(cè)響起科吭,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤昏滴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后对人,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谣殊,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年牺弄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了姻几。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡势告,死狀恐怖蛇捌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情咱台,我是刑警寧澤络拌,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站回溺,受9級特大地震影響春贸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜遗遵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一萍恕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧车要,春花似錦允粤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至登澜,卻和暖如春阔挠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背脑蠕。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工购撼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留跪削,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓迂求,卻偏偏與公主長得像碾盐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子揩局,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 0x01 目錄 常見編碼: ASCII編碼 Base64/32/16編碼 shellcode編碼 Quoted-p...
    H0f_9閱讀 12,653評論 2 17
  • CTF中那些腦洞大開的編碼和加密 0x00 前言 正文開始之前先閑扯幾句吧毫玖,玩CTF的小伙伴也許會遇到類似這樣的問...
    查無此人asdasd閱讀 5,973評論 0 19
  • 古典密碼學(xué)之所以被稱為古典,是因?yàn)閰^(qū)別于現(xiàn)代密碼學(xué)凌盯,這些密碼理論雖然很有價(jià)值付枫,但是現(xiàn)在很少使用。因此驰怎,學(xué)習(xí)古典密碼...
    SukFortune閱讀 17,766評論 2 9
  • 在娛樂至死的當(dāng)今阐滩,可謂群星璀璨,要當(dāng)明星當(dāng)網(wǎng)紅是多少少男少女的夢想县忌!而在旋轉(zhuǎn)舞臺上掂榔、在追光燈下的明星生活真的那么愜...
    郭妮芳閱讀 864評論 1 2
  • 高調(diào)和低調(diào) 樂隊(duì)的吹喇叭吹號, 有人吹高調(diào)症杏, 有人愛低調(diào)装获,音調(diào)和諧才最好。其實(shí)我們都知道厉颤, 高調(diào)調(diào)門高穴豫, 傳播的悠...
    阿超Lilian閱讀 110評論 0 0