開淘寶店和做網(wǎng)站有什么區(qū)別福鼎網(wǎng)站優(yōu)化公司
在歷史悠久的加密技術(shù)中,愷撒密碼以其簡單卻有效的原理聞名。通過固定的字母位移,明文可以被轉(zhuǎn)換成密文,而解密則是逆向操作。這種技術(shù)不僅適用于英文字母,還可以擴展到其他語言的字符體系,如日語的平假名或漢語的拼音。本文探討了愷撒密碼的基本原理及其在實際應(yīng)用中的使用案例,并用python來實現(xiàn)該方法。
工作中經(jīng)常性會需要對一些信息進行解密,人們普遍使用一些較為簡單的加密方式。加密技術(shù)不僅令人著迷,還在信息安全領(lǐng)域發(fā)揮著重要作用。通過深入理解這些方法,我們能更好地保護數(shù)據(jù)安全,同時也能理解歷史上許多重要文獻背后隱藏的秘密。愷撒密碼作為加密技術(shù)的先驅(qū),不僅啟發(fā)了現(xiàn)代密碼學的發(fā)展,也提醒我們保持對數(shù)據(jù)安全和隱私的關(guān)注。
在這篇文章中,我們將探索愷撒密碼和相關(guān)字符加解密的基本原理及其在現(xiàn)代應(yīng)用中的價值。通過python分析其加密和解密過程,我們可以更好地理解數(shù)據(jù)保護的重要性,以及加密技術(shù)如何在信息交流和安全中發(fā)揮作用。
目錄
一、凱撒密碼加、解密
1.1 通過位移的python實現(xiàn)
1.2 通過建立映射的python實現(xiàn)
二、函數(shù)映射加、解密
一、凱撒密碼加、解密
我們首先學習通過凱撒密碼進行解密。愷撒密碼是一種通過將明文字母表按照固定數(shù)目進行位移來加密的方法。此加密技術(shù)不僅適用于英文字母,也可以應(yīng)用于其他字符體系,如日語中的平假名或漢語拼音。
如下圖所示我們用小寫的英文字母表示明文,用大寫英文字母表示密文,并對字母表平移三位字母方式進行加密。此處我們需要對KHOORLDPDSROLFHRIILFHUSOHDVHVKRZPHBRXULGHQWLILFDWLRQGRFXPHQWV 這段密文進行解密,并將解密后的信息寫入同目錄caesar.txt文件中。
1.1 通過位移的python實現(xiàn)
# 定義一個名為 decrypt 的函數(shù),該函數(shù)接收兩個參數(shù):ciphertext(密文)和 shift(位移量)
def decrypt(ciphertext, shift):# 初始化一個空字符串 plaintext,用于存儲解密后的明文plaintext = ""# 遍歷密文中的每個字符for char in ciphertext:# 判斷字符是否為大寫英文字母if 'A' <= char <= 'Z':# 對大寫英文字母進行解密操作,ord(char) 獲取字符的 ASCII 碼值,ord('A') 是字母 A 的 ASCII 碼值# (ord(char) - ord('A') - shift) 計算字符在字母表中的相對位置并減去位移量# % 26 確保結(jié)果仍在 26 個英文字母的范圍內(nèi)# chr(...) 將計算后的 ASCII 碼值轉(zhuǎn)換回字符decrypted_char = chr((ord(char) - ord('A') - shift) % 26 + ord('A'))# .lower() 將解密后的大寫字母轉(zhuǎn)換為小寫plaintext += decrypted_char.lower() # 轉(zhuǎn)換為小寫else:# 如果字符不是大寫英文字母,則直接添加到 plaintext 字符串中plaintext += charreturn plaintext# 給定的密文
ciphertext = "KHOORLDPDSROLFHRIILFHUSOHDVHVKRZPHBRXULGHQWLILFDWLRQGRFXPHQWV"# 解密密文,假設(shè)密文是通過向后平移3位加密的
shift = 3
decrypted_text = decrypt(ciphertext, shift)
print("明文信息為:", decrypted_text)# 將解密后的文本寫入文件
file_path = './caesar.txt'with open(file_path, 'w') as file:file.write(decrypted_text)
1.2 通過建立映射的python實現(xiàn)
list_c = {'A':'x','B':'y','C':'z','D':'a','E':'b','F':'c','G':'d','H':'e','I':'f','J':'g','K':'h','L':'i','M':'j','N':'k','O':'l','P':'m','Q':'n','R':'o','S':'p','T':'q','U':'r','V':'s','W':'t','X':'u','Y':'v','Z':'w'}# 給定的密文
ciphertext = "KHOORLDPDSROLFHRIILFHUSOHDVHVKRZPHBRXULGHQWLILFDWLRQGRFXPHQWV"# 解密密文
print("明文信息為:",ciphertext)
plaintext = ""
for char in list(ciphertext):print(list_c[char])plaintext += str(list_c[char])# plaintext += list_c[char]
print("加密信息為:",plaintext)
# 將解密后的文本寫入文件
file_path = './caesar.txt'with open(file_path, 'w') as file:
file.write(plaintext)
打印結(jié)果:
明文信息為: KHOORLDPDSROLFHRIILFHUSOHDVHVKRZPHBRXULGHQWLILFDWLRQGRFXPHQWV
加密信息為: helloiamapoliceofficerpleaseshowmeyouridentificationdocuments
?
二、函數(shù)映射加、解密
這張圖片展示了兩個加密和解密的字符串,分別使用了不同的字母替換方法。第一個字符串使用了一種特定的字母排列方式來隱藏信息,而第二個字符串則顯示了如何通過相同的排列方式來解密。?
使用python實現(xiàn)映射關(guān)系
list_c = {'a':'D','b':'K','c':'V','d':'Q','e':'F','f':'I','g':'B','h':'J','i':'W','j':'P','k':'E','l':'S','m':'C','n':'X','o':'H','p':'T','q':'M','r':'Y','s':'A','t':'U','u':'O','v':'L','w':'R','x':'G','y':'Z','z':'N'}# 給定的密文
ciphertext = "this is the police please stay calm"# 解密密文
print("明文信息為:",ciphertext)
plaintext = ""
for char in list(ciphertext):if char == " ":plaintext += char# print(list_c[char])else: plaintext += str(list_c[char])# plaintext += list_c[char]
print("加密信息為:",plaintext)
# 將解密后的文本寫入文件
file_path = '/home/qingjiao/數(shù)據(jù)安全應(yīng)用/plaintext.txt'with open(file_path, 'w') as file:
file.write(plaintext)
打印結(jié)果:
明文信息為: this is the police please stay calm
加密信息為: UJWA WA UJF THSWVF TSFDAF AUDZ VDSC