python實現符文加、解密

在歷史悠久的加密技術中,愷撒密碼以其簡單卻有效的原理聞名。通過固定的字母位移,明文可以被轉換成密文,而解密則是逆向操作。這種技術不僅適用于英文字母,還可以擴展到其他語言的字符體系,如日語的平假名或漢語的拼音。本文探討了愷撒密碼的基本原理及其在實際應用中的使用案例,并用python來實現該方法。

工作中經常性會需要對一些信息進行解密,人們普遍使用一些較為簡單的加密方式。加密技術不僅令人著迷,還在信息安全領域發揮著重要作用。通過深入理解這些方法,我們能更好地保護數據安全,同時也能理解歷史上許多重要文獻背后隱藏的秘密。愷撒密碼作為加密技術的先驅,不僅啟發了現代密碼學的發展,也提醒我們保持對數據安全和隱私的關注。

在這篇文章中,我們將探索愷撒密碼和相關字符加解密的基本原理及其在現代應用中的價值。通過python分析其加密和解密過程,我們可以更好地理解數據保護的重要性,以及加密技術如何在信息交流和安全中發揮作用。

目錄

一、凱撒密碼加、解密

1.1 通過位移的python實現

1.2 通過建立映射的python實現

二、函數映射加、解密


一、凱撒密碼加、解密

我們首先學習通過凱撒密碼進行解密。愷撒密碼是一種通過將明文字母表按照固定數目進行位移來加密的方法。此加密技術不僅適用于英文字母,也可以應用于其他字符體系,如日語中的平假名或漢語拼音。

如下圖所示我們用小寫的英文字母表示明文,用大寫英文字母表示密文,并對字母表平移三位字母方式進行加密。此處我們需要對KHOORLDPDSROLFHRIILFHUSOHDVHVKRZPHBRXULGHQWLILFDWLRQGRFXPHQWV 這段密文進行解密,并將解密后的信息寫入同目錄caesar.txt文件中。

1.1 通過位移的python實現

# 定義一個名為 decrypt 的函數,該函數接收兩個參數: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 確保結果仍在 26 個英文字母的范圍內# chr(...) 將計算后的 ASCII 碼值轉換回字符decrypted_char = chr((ord(char) - ord('A') - shift) % 26 + ord('A'))# .lower() 將解密后的大寫字母轉換為小寫plaintext += decrypted_char.lower()  # 轉換為小寫else:# 如果字符不是大寫英文字母,則直接添加到 plaintext 字符串中plaintext += charreturn plaintext# 給定的密文
ciphertext = "KHOORLDPDSROLFHRIILFHUSOHDVHVKRZPHBRXULGHQWLILFDWLRQGRFXPHQWV"# 解密密文,假設密文是通過向后平移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實現

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)

打印結果:


明文信息為: KHOORLDPDSROLFHRIILFHUSOHDVHVKRZPHBRXULGHQWLILFDWLRQGRFXPHQWV

加密信息為: helloiamapoliceofficerpleaseshowmeyouridentificationdocuments


?

二、函數映射加、解密

這張圖片展示了兩個加密和解密的字符串,分別使用了不同的字母替換方法。第一個字符串使用了一種特定的字母排列方式來隱藏信息,而第二個字符串則顯示了如何通過相同的排列方式來解密。?

使用python實現映射關系

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/數據安全應用/plaintext.txt'with open(file_path, 'w') as file:
file.write(plaintext)

打印結果:


明文信息為: this is the police please stay calm

加密信息為: UJWA WA UJF THSWVF TSFDAF AUDZ VDSC


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/37435.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/37435.shtml
英文地址,請注明出處:http://en.pswp.cn/web/37435.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

醫院管理系統帶萬字文檔醫院預約掛號管理系統基于spingboot和vue的前后端分離java項目java課程設計java畢業設計

文章目錄 倉庫管理系統一、項目演示二、項目介紹三、萬字項目文檔四、部分功能截圖五、部分代碼展示六、底部獲取項目源碼帶萬字文檔&#xff08;9.9&#xffe5;帶走&#xff09; 倉庫管理系統 一、項目演示 醫院管理系統 二、項目介紹 基于springbootvue的前后端分離醫院管…

SOLR數據導入和導出

情景 1、solr中的類型修改導致solr的core無法加載&#xff0c;只能刪除core&#xff0c;重新創建。但是solr中的數據&#xff0c;只能從core心中導出&#xff0c;在導入新建的核心中。 2、試了幾種方案&#xff0c;還是通過第三方freedev / solr-import-export-json的組件更加…

Spring框架(二)——IoC

1、什么是IoC IoC—Inverse of Control&#xff0c;控制反轉&#xff0c;將對象的創建權力反轉給Spring框架控制反轉是為了降低程序耦合度&#xff0c;提高程序擴展力&#xff0c;達到OCP原則&#xff0c;達到DIP原則 OCP開閉原則&#xff1a;在軟件開發過程中應當對擴展開放&…

跨阻放大器

#創作靈感# 最近涉及到微電流的監測項目&#xff0c;而里面的核心就是跨阻放大器&#xff0c;所以這里做一個簡單的介紹&#xff0c;后續等項目完成了&#xff0c;再做一個實例的介紹。 #正文# 跨阻放大器&#xff08;Transimpedance Amplifier, TIA&#xff09;是一種將輸入電…

Milvus Cloud集成 DSPy:搭建高效 RAG Pipeline

引言 大語言模型(LLM)為行業帶來變革,具備強大的生成能力,在與知識庫和檢索器等工具相結合時,能夠高效推動聊天機器人和 Agent 等高級生成式 AI(GenAI)應用的發展。與 LLMs 互動的過程中,最核心的部分是提示(prompt)。Prompt 是指用于指導這些模型執行特定任務的命令…

NCBI Virus 幫助文檔

What is NCBI Virus?&#xff08;什么是NCBI病毒&#xff09; 主要功能&#xff1a; Compare your sequence to those in the NCBI Virus database using NCBI BLAST algorithm. 使用NCBI BLAST算法將您的序列與NCBI病毒數據庫中的序列進行比較。Search, view and download …

Oracle PL/SQL 教程 第一部分

PL / SQL代表“過程語言擴展到結構化查詢語言”。 SQL用于查詢和更新關系數據庫。 PL / SQL與SQL緊密集成。 PL / SQL是SQL的Oracle過程擴展&#xff0c;是一種便攜式&#xff0c;高性能的事務處理語言。 使用PL / SQL&#xff0c;可以使用所有SQL數據操作&#xff0c;游標…

威聯通 NAS 磁盤擴容 更換大容量磁盤具體操作以以TS-532X為例

第一步 檢查磁盤狀態 打開存儲與快照總管&#xff0c;選左側磁盤查看磁盤狀態&#xff0c;應該是就緒狀態。 三塊磁盤都是就緒狀態。 上面截圖是更換過程中的截圖 具體操作 然后點擊存儲/快照 &#xff0c;選管理 選逐一更換磁盤&#xff0c;這里raid組需要注意&#xff0…

【LeetCode】 740. 刪除并獲得點數

這真是一道好題&#xff01;這道題不僅考察了抽象思維&#xff0c;還考察了分析能力、化繁為簡的能力&#xff0c;同時還有對基本功的考察。想順利地做出這道題還挺不容易&#xff01;我倒在了第一步與第二步&#xff1a;抽象思維和化繁為簡。題目的要求稍微復雜一些&#xff0…

Spring Session與分布式會話管理詳解

隨著微服務架構的普及&#xff0c;分布式系統中的會話管理變得尤為重要。傳統的單點會話管理已經不能滿足現代應用的需求。本文將深入探討Spring Session及其在分布式會話管理中的應用。 什么是Spring Session&#xff1f; Spring Session是一個用于管理HttpSession的Spring框…

數據恢復篇:如何在電腦上恢復已刪除和丟失的音樂文件

盡管流媒體網絡非常流行&#xff0c;但許多人仍然選擇將音樂下載并保存在 PC 本地。這會使文件面臨丟失或意外刪除的風險。 幸運的是&#xff0c;您可以使用數據恢復軟件恢復已刪除的音樂和其他文件類型。這篇文章討論了這些解決方案以及如何使用奇客數據恢復檢索丟失的音樂文…

02.Linux下安裝FFmpeg

目錄 一、下載FFmpeg的編譯源碼 二、編譯源碼 三、ffmpeg工具結構解析 1、bin目錄 2、include庫 3、lib庫 四、注意事項 五、可能出現的一些問題 1、某些工具未安裝/版本過久 2、缺少pkg-config工具 3、缺少ffmplay FFmpeg 是一個開源的跨平臺音視頻處理工具集&…

揭秘銀行理財產品:高收益背后的秘密

一、按幣種分類 人民幣理財產品&#xff1a;主要投資于人民幣計價的金融工具&#xff0c;如國債、金融債、央行票據等。此類產品風險較低&#xff0c;收益穩定。外幣理財產品&#xff1a;按照投資的本金風險分類&#xff0c;可分為本金100%保障、部分本金保障及不保本的外匯理…

華為OD機考題HJ24 合唱隊

前言 應廣大同學要求&#xff0c;開始以OD機考題作為練習題&#xff0c;看看算法和數據結構掌握情況。有需要練習的可以關注下。 描述 N 位同學站成一排&#xff0c;音樂老師要請最少的同學出列&#xff0c;使得剩下的 K 位同學排成合唱隊形。 設&#x1d43e;K位同學從左到…

科普文:八大排序算法(JAVA實現)+ 自制動畫 (袁廚的算法小屋)

我將我倉庫里的排序算法給大家匯總整理了一下&#xff0c;寫的非常非常細&#xff0c;還對每個算法制作了動畫&#xff0c;一定能夠對大家有所幫助&#xff0c;歡迎大家閱讀。另外我也對 leetcode 上面可以用排序算法秒殺的算法題進行了總結&#xff0c;會在后面的文章中進行發…

物聯網協議都包含哪些協議?

物聯網協議是物聯網生態系統中不可或缺的組成部分&#xff0c;它們負責處理和協調物聯網設備之間的通信。具體介紹如下&#xff1a; Ethernet&#xff1a;以太網是一種有線網絡協議&#xff0c;廣泛應用于局域網絡(LAN)中&#xff0c;提供穩定的高速數據傳輸。Wi-Fi&#xff1…

Python自動化運維 系統基礎信息模塊

1.系統信息的收集 系統信息的收集&#xff0c;對于服務質量的把控&#xff0c;服務的監控等來說是非常重要的組成部分&#xff0c;甚至是核心的基礎支撐部分。我們可以通過大量的核心指標數據&#xff0c;結合對應的檢測體系&#xff0c;快速的發現異常現象的苗頭&#xff0c;進…

springboot項目如何整合rocketmq

1、項目導入rocketmq依賴 添加 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-stream-rocketmq</artifactId> </dependency> 完整內容如下: <?xml version="1.0" encoding="…

Golang | Leetcode Golang題解之第208題實現Trie前綴樹

題目&#xff1a; 題解&#xff1a; type Trie struct {children [26]*TrieisEnd bool }func Constructor() Trie {return Trie{} }func (t *Trie) Insert(word string) {node : tfor _, ch : range word {ch - aif node.children[ch] nil {node.children[ch] &Trie{…

mac|tableau public 儀表盤使用

對華東地區的利潤進行儀表盤可視化 選擇下面的功能表的新建儀表盤,把上面的表1表2放入其中 通過下圖操作將兩個表聯合起來&#xff0c;即上圖使用篩選器時下面的表隨之改變 將上圖設置為篩選器&#xff0c;可以通過點擊地區查看數據