Python實現簡易凱撒密碼的示例代碼_第1頁
Python實現簡易凱撒密碼的示例代碼_第2頁
Python實現簡易凱撒密碼的示例代碼_第3頁
Python實現簡易凱撒密碼的示例代碼_第4頁
Python實現簡易凱撒密碼的示例代碼_第5頁
已閱讀5頁,還剩1頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第Python實現簡易凱撒密碼的示例代碼目錄概念及原理實現過程破解原理及實現

概念及原理

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

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

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

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

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

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

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

(1)設計思想:

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

2.錯位需要對每個字符進行操作,可以把字符串轉換為字符數組,調用的是string類的toCharArray方法

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

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

(2)程序流程圖:

實現過程

我們定義個key=13,此時我們對字符串Thisismysecretmessage進行加密

importpyperclip

message='Thisismysecretmessage'#保存加密或解密的字符串

key=13#保存加密密鑰的整數

mode='encrypt'

LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'

translated=''

message=message.upper()

forsymbolinmessage:

ifsymbolinLETTERS:

num=LETTERS.find(symbol)

ifmode=='encrypt':

num=num+key

elifmode=='decrypt':

num=num-key

ifnum=len(LETTERS):

num=num-len(LETTERS)

elifnum0:

num=num+len(LETTERS)

translated=translated+LETTERS[num]

else:

translated=translated+symbol

print(translated)

pyperclip.copy(translated)

打印結果如下:

GUVFVFZLFRPERGZRFFNTR

[Finishedin0.8s]

我們來對上面這部分代碼進行分析

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

message='Thisismysecretmessage'#保存加密或解密的字符串

key=13#保存加密密鑰的整數

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

而key用來保存加密密鑰

message=message.upper()

調用了一個upper函數,將加解密字符串全部變成大寫字母

后面的實現過程很簡單,判斷mode值是否為encrpy,然后對字符進行移位

破解原理及實現

我們將加密后的字符串進行破解,實現原理如下:

importpyperclip

message='GUVFVFZLFRPERGZRFFNTR'

LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'

forkeyinrange(len(LETTERS)):

translated=''

forsymbolinmessage:

ifsymbolinLETTERS:

num=LETTERS.find(symbol)

num=num-key

ifnum0:

num=num+len(LETTERS)

translated=translated+LETTERS[num]

else:

translated=translated+symbol

print('Key#%s:%s'%(key,translated))

打印結果如下:

Key#0:GUVFVFZLFRPERGZRFFNTR

Key#1:FTUEUEYKEQODQFYQEEMSQ

Key#2:ESTDTDXJDPNCPEXPDDLRP

Key#3:DRSCSCWICOMBODWOCCKQO

Key#4:CQRBRBVHBNLANCVNBBJPN

Key#5:BPQAQAUGAMKZMBUMAAIOM

Key#6:AOPZPZTFZLJYLATLZZHNL

Key#7:ZNOYOYSEYKIXKZSKYYGMK

Key#8:YMNXNXRDXJHWJYRJXXFLJ

Key#9:XLMWMWQCWIGVIXQIWWEKI

Key#10:WKLVLVPBVHFUHWPHVVDJH

Key#11:VJKUKUOAUGETGVOGUUCIG

Key#12:UIJTJTNZTFDSFUNFTTBHF

Key#13:THISISMYSECRETMESSAGE

Key#14:SGHRHRLXRDBQDSLDRRZFD

Key#15:RFGQGQKWQCAPCRKCQQYEC

Key#16:QEFPFPJVPBZOBQJBPPXDB

Key#17:PDEOEOIUOAYNAPIAOOWCA

Key#18:OCDNDNHTNZXMZOHZNNVBZ

Key#19:NBCMCMGSMYWLYNGYMMUAY

Key#20:MABLBLFRLXVKXMFXLLTZX

Key#21:LZAKAKEQKWUJWLEWKKSYW

Key#22:KYZ

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論