Python實(shí)現(xiàn)的凱撒密碼算法示例
本文實(shí)例講述了Python實(shí)現(xiàn)的凱撒密碼算法。分享給大家供大家參考,具體如下:
一 介紹
凱撒密碼是一種非常古老的加密方法,相傳當(dāng)年凱撒大地行軍打仗時(shí)為了保證自己的命令不被敵軍知道,就使用這種特殊的方法進(jìn)行通信,以確保信息傳遞的安全。他的原理很簡(jiǎn)單,說(shuō)到底就是字母于字母之間的替換。下面讓我們看一個(gè)簡(jiǎn)單的例子:“baidu”用凱撒密碼法加密后字符串變?yōu)椤癳dlgx”,它的原理是什么呢?把“baidu”中的每一個(gè)字母按字母表順序向后移3位,所得的結(jié)果就是剛才我們所看到的密文。
二 代碼
# -*- coding:utf-8 -*- import os #==================================================================# # 凱撒密碼(caesar)是最早的代換密碼,對(duì)稱密碼的一種 # # 算法:將每個(gè)字母用字母表中它之后的第k個(gè)字母(稱作位移值)替代 # #==================================================================# def encryption(): str_raw = raw_input("請(qǐng)輸入明文:") k = int(raw_input("請(qǐng)輸入位移值:")) str_change = str_raw.lower() str_list = list(str_change) str_list_encry = str_list i = 0 while i < len(str_list): if ord(str_list[i]) < 123-k: str_list_encry[i] = chr(ord(str_list[i]) + k) else: str_list_encry[i] = chr(ord(str_list[i]) + k - 26) i = i+1 print ("加密結(jié)果為:"+"".join(str_list_encry)) def decryption(): str_raw = raw_input("請(qǐng)輸入密文:") k = int(raw_input("請(qǐng)輸入位移值:")) str_change = str_raw.lower() str_list = list(str_change) str_list_decry = str_list i = 0 while i < len(str_list): if ord(str_list[i]) >= 97+k: str_list_decry[i] = chr(ord(str_list[i]) - k) else: str_list_decry[i] = chr(ord(str_list[i]) + 26 - k) i = i+1 print ("解密結(jié)果為:"+"".join(str_list_decry)) while True: print (u"1. 加密") print (u"2. 解密") choice = raw_input("請(qǐng)選擇:") if choice == "1": encryption() elif choice == "2": decryption() else: print (u"您的輸入有誤!")
三 運(yùn)行結(jié)果
PS:關(guān)于加密解密感興趣的朋友還可以參考本站在線工具:
文字在線加密解密工具(包含AES、DES、RC4等):
http://tools.jb51.net/password/txt_encode
MD5在線加密工具:
http://tools.jb51.net/password/CreateMD5Password
在線散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt
在線MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha
在線sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python加密解密算法與技巧總結(jié)》、《Python編碼操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
python+mongodb數(shù)據(jù)抓取詳細(xì)介紹
這篇文章主要介紹了python+mongodb數(shù)據(jù)抓取詳細(xì)介紹,具有一定參考價(jià)值,需要的朋友可以了解下。2017-10-10調(diào)整Jupyter notebook的啟動(dòng)目錄操作
這篇文章主要介紹了調(diào)整Jupyter notebook的啟動(dòng)目錄操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04python實(shí)現(xiàn)簡(jiǎn)單井字棋小游戲
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單井字棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03【Python】Python的urllib模塊、urllib2模塊批量進(jìn)行網(wǎng)頁(yè)下載文件
這篇文章主要介紹了Python的urllib模塊、urllib2模塊批量進(jìn)行網(wǎng)頁(yè)下載文件,就是一個(gè)簡(jiǎn)單的從網(wǎng)頁(yè)抓取數(shù)據(jù)、下載文件的小程序,需要的可以了解一下。2016-11-11python和C++共享內(nèi)存?zhèn)鬏攬D像的示例
這篇文章主要介紹了python和C++共享內(nèi)存?zhèn)鬏攬D像的示例,幫助大家利用python處理圖片,感興趣的朋友可以了解下2020-10-10新手入門學(xué)習(xí)python Numpy基礎(chǔ)操作
這篇文章主要介紹了新手入門學(xué)習(xí)python Numpy基礎(chǔ)操作,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03Python 實(shí)現(xiàn)Mac 屏幕截圖詳解
今天小編就為大家分享一篇對(duì)Python 實(shí)現(xiàn)Mac 屏幕截圖詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-10-10python+pytest接口自動(dòng)化參數(shù)關(guān)聯(lián)
這篇文章主要介紹了python+pytest接口自動(dòng)化參數(shù)關(guān)聯(lián),參數(shù)關(guān)聯(lián),也叫接口關(guān)聯(lián),即接口之間存在參數(shù)的聯(lián)系或依賴,更多相關(guān)內(nèi)容需要的小伙伴可可以參考一下2022-06-06