最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實現(xiàn)簡易凱撒密碼的示例代碼

 更新時間:2022年09月15日 14:15:12   作者:Java程序員-張凱  
密碼的使用最早可以追溯到古羅馬時期,《高盧戰(zhàn)記》有描述愷撒曾經(jīng)使用密碼來傳遞信息,即所謂的“愷撒密碼”。本文將利用Python實現(xiàn)簡易的凱撒密碼,感興趣的可以了解一下

概念及原理

根據(jù)百度百科上的解釋,凱撒密碼是一種古老的加密算法。

密碼的使用最早可以追溯到古羅馬時期,《高盧戰(zhàn)記》有描述愷撒曾經(jīng)使用密碼來傳遞信息,即所謂的“愷撒密碼”,它是一種替代密碼,通過將字母按順序推后起3位起到加密作用,如將字母A換作字母D,將字母B換作字母E。因據(jù)說愷撒是率先使用加密函的古代將領(lǐng)之一,因此這種加密方法被稱為愷撒密碼。這是一種簡單的加密方法,這種密碼的密度是很低的,只需簡單地統(tǒng)計字頻就可以破譯。 現(xiàn)今又叫“移位密碼”,只不過移動的為數(shù)不一定是3位而已。

密碼術(shù)可以大致別分為兩種,即易位和替換,當(dāng)然也有兩者結(jié)合的更復(fù)雜的方法。在易位中字母不變,位置改變;替換中字母改變,位置不變。

將替換密碼用于軍事用途的第一個文件記載是愷撒著的《高盧記》。愷撒描述了他如何將密信送到正處在被圍困、瀕臨投降的西塞羅。其中羅馬字母被替換成希臘字母使得敵人根本無法看懂信息。

蘇托尼厄斯在公元二世紀(jì)寫的《愷撒傳》中對愷撒用過的其中一種替換密碼作了詳細(xì)的描寫。愷撒只是簡單地把信息中的每一個字母用字母表中的該字母后的第三個字母代替。這種密碼替換通常叫做愷撒移位密碼,或簡單的說,愷撒密碼。

在密碼學(xué)中,凱撒密碼(或稱愷撒加密、愷撒變換、變換加密)是一種最簡單且最廣為人知的加密技術(shù)。它是一種替換加密的技術(shù)。這個加密方法是以愷撒的名字命名的,當(dāng)年愷撒曾用此方法與其將軍們進(jìn)行聯(lián)系。愷撒密碼通常被作為其他更復(fù)雜的加密方法中的一個步驟,例如維吉尼亞密碼。愷撒密碼還在現(xiàn)代的ROT13系統(tǒng)中被應(yīng)用。但是和所有的利用字母表進(jìn)行替換的加密技術(shù)一樣,愷撒密碼非常容易被破解,而且在實際應(yīng)用中也無法保證通信安全。

說了這么多,相信大家可能也有點暈了,下面這張圖加密方法就是錯三個位來實現(xiàn)加密功能

(1)  設(shè)計思想:

1.由于輸入的是一串英文字符,所以我們用String類來編寫,況且String類有許多方法可以調(diào)用

2.錯位需要對每個字符進(jìn)行操作,可以把字符串轉(zhuǎn)換為字符數(shù)組,調(diào)用的是string類的toCharArray方法

3.由于string類也是采用Unicode字符集,所以我們進(jìn)行錯位操作時只需讀取一個字符,然后與數(shù)字3相加,再轉(zhuǎn)換為char類型,就實現(xiàn)了錯3位加密操作,解密則減3.

4.在加密操作中,如果加密的是字母表最后三個,則必須實現(xiàn)循環(huán)操作,即X加密后是A,Y加密后是B,Z加密后是C,實現(xiàn)這個就要用到ASCII碼,當(dāng)讀到XYZ時,加密則是減去23后轉(zhuǎn)換為char類型,當(dāng)然,解密時讀到ABC加上23即可

(2)  程序流程圖:

實現(xiàn)過程

我們定義個key=13,此時我們對字符串This is my secret message進(jìn)行加密

import pyperclip
 
message = 'This is my secret message'#保存加密或解密的字符串
key = 13#保存加密密鑰的整數(shù)
 
mode = 'encrypt'
 
LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
 
translated = ''
 
message = message.upper()
 
for symbol in message:
    if symbol in LETTERS:
        num = LETTERS.find(symbol)
        if mode == 'encrypt':
            num = num + key
        elif mode == 'decrypt':
            num = num - key
 
        if num >= len(LETTERS):
            num = num - len(LETTERS)
        elif num < 0:
            num = num + len(LETTERS)
 
        translated = translated + LETTERS[num]
 
    else:
        translated = translated + symbol
 
print(translated)
 
pyperclip.copy(translated)

打印結(jié)果如下:

GUVF VF ZL FRPERG ZRFFNTR
[Finished in 0.8s]

我們來對上面這部分代碼進(jìn)行分析

我們可以看到,第一行調(diào)用了一個pyperclip的模塊,我們需要下載這個模塊,很簡單,安裝一個pip,直接輸入pip install pyperclip即可完成安裝

message = 'This is my secret message'#保存加密或解密的字符串
key = 13#保存加密密鑰的整數(shù)

message指定了用來保存加解密的字符串

而key用來保存加密密鑰

message = message.upper()

調(diào)用了一個upper函數(shù),將加解密字符串全部變成大寫字母

后面的實現(xiàn)過程很簡單,判斷mode值是否為encrpy,然后對字符進(jìn)行移位

破解原理及實現(xiàn)

我們將加密后的字符串進(jìn)行破解,實現(xiàn)原理如下:

import pyperclip
 
message = 'GUVF VF ZL FRPERG ZRFFNTR'
 
LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
 
for key in range(len(LETTERS)):
 
    translated = ''
 
    for symbol in message:
        if symbol in LETTERS:
            num = LETTERS.find(symbol)
            num = num - key
 
            if num < 0:
                num = num + len(LETTERS)
 
            translated = translated + LETTERS[num]
 
        else:
            translated = translated + symbol
 
    print('Key #%s:%s'%(key,translated))

打印結(jié)果如下:

Key #0:GUVF VF ZL FRPERG ZRFFNTR
Key #1:FTUE UE YK EQODQF YQEEMSQ
Key #2:ESTD TD XJ DPNCPE XPDDLRP
Key #3:DRSC SC WI COMBOD WOCCKQO
Key #4:CQRB RB VH BNLANC VNBBJPN
Key #5:BPQA QA UG AMKZMB UMAAIOM
Key #6:AOPZ PZ TF ZLJYLA TLZZHNL
Key #7:ZNOY OY SE YKIXKZ SKYYGMK
Key #8:YMNX NX RD XJHWJY RJXXFLJ
Key #9:XLMW MW QC WIGVIX QIWWEKI
Key #10:WKLV LV PB VHFUHW PHVVDJH
Key #11:VJKU KU OA UGETGV OGUUCIG
Key #12:UIJT JT NZ TFDSFU NFTTBHF
Key #13:THIS IS MY SECRET MESSAGE
Key #14:SGHR HR LX RDBQDS LDRRZFD
Key #15:RFGQ GQ KW QCAPCR KCQQYEC
Key #16:QEFP FP JV PBZOBQ JBPPXDB
Key #17:PDEO EO IU OAYNAP IAOOWCA
Key #18:OCDN DN HT NZXMZO HZNNVBZ
Key #19:NBCM CM GS MYWLYN GYMMUAY
Key #20:MABL BL FR LXVKXM FXLLTZX
Key #21:LZAK AK EQ KWUJWL EWKKSYW
Key #22:KYZJ ZJ DP JVTIVK DVJJRXV
Key #23:JXYI YI CO IUSHUJ CUIIQWU
Key #24:IWXH XH BN HTRGTI BTHHPVT
Key #25:HVWG WG AM GSQFSH ASGGOUS
[Finished in 0.2s]

我們可以看出,Key#13即為我們所求的答案。

到此這篇關(guān)于Python實現(xiàn)簡易凱撒密碼的示例代碼的文章就介紹到這了,更多相關(guān)Python凱撒密碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python Protobuf定義消息類型知識點講解

    python Protobuf定義消息類型知識點講解

    在本篇文章里小編給大家整理的是一篇關(guān)于python Protobuf定義消息類型知識點講解,有興趣的朋友們可以學(xué)習(xí)下。
    2021-03-03
  • Django添加KindEditor富文本編輯器的使用

    Django添加KindEditor富文本編輯器的使用

    今天小編就為大家分享一篇關(guān)于Django添加KindEditor富文本編輯器的使用,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • python飛機(jī)大戰(zhàn)pygame游戲背景設(shè)計詳解

    python飛機(jī)大戰(zhàn)pygame游戲背景設(shè)計詳解

    這篇文章主要介紹了python飛機(jī)大戰(zhàn)pygame游戲背景設(shè)計,結(jié)合實例形式詳細(xì)分析了Python使用pygame模塊設(shè)計游戲背景相關(guān)原理、流程與實現(xiàn)技巧,需要的朋友可以參考下
    2019-12-12
  • Python中is與==的使用區(qū)別詳解

    Python中is與==的使用區(qū)別詳解

    這篇文章小編主要給大家講解的是Python中is與==的使用區(qū)別的相關(guān)資料,需要的下伙伴可以參考下面文章內(nèi)容的具體詳細(xì)資料
    2021-09-09
  • 利用numpy+matplotlib繪圖的基本操作教程

    利用numpy+matplotlib繪圖的基本操作教程

    這篇文章主要給大家介紹了利用numpy+matplotlib繪圖的基本操作,文中介紹的非常詳細(xì),對大家學(xué)習(xí)matplotlib繪圖具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-05-05
  • jupyter實現(xiàn)重新加載模塊

    jupyter實現(xiàn)重新加載模塊

    這篇文章主要介紹了jupyter實現(xiàn)重新加載模塊,具有很好的價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python實現(xiàn)掃碼工具的示例代碼

    Python實現(xiàn)掃碼工具的示例代碼

    這篇文章主要介紹了Python實現(xiàn)掃碼工具的示例代碼,代碼簡單易懂對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • python圖像處理入門(一)

    python圖像處理入門(一)

    這篇文章主要介紹了python圖像處理入門,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Python中Pytest測試框架的fixture使用詳解

    Python中Pytest測試框架的fixture使用詳解

    這篇文章主要介紹了Python中Pytest測試框架的fixture使用詳解,Pytest的fixture的目的是提供一個測試的基線,在此基線基礎(chǔ)上,可以更可靠的進(jìn)行重復(fù)測試,需要的朋友可以參考下
    2023-08-08
  • 深入淺析Python字符編碼

    深入淺析Python字符編碼

    Python的字符串編碼規(guī)則一直讓我很頭疼,花了點時間研究了下,并不復(fù)雜,本文給大家介紹python字符編碼,感興趣的朋友一起學(xué)習(xí)吧
    2015-11-11

最新評論

彰化县| 富顺县| 平湖市| 永德县| 诸暨市| 田东县| 通州区| 香河县| 杭锦旗| 三门县| 日土县| 泸水县| 玛多县| 尼木县| 察雅县| 龙陵县| 定州市| 柘城县| 子长县| 常德市| 垦利县| 雷波县| 淮北市| 浑源县| 庆阳市| 共和县| 玛多县| 胶南市| 娄烦县| 彭山县| 宁德市| 神农架林区| 梓潼县| 东海县| 堆龙德庆县| 安岳县| 吕梁市| 香格里拉县| 南江县| 阿城市| 栾城县|