日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網(wǎng)站首頁 編程語言 正文

python實現(xiàn)凱撒密碼加密解密的示例代碼_python

作者:半夏微光1117 ? 更新時間: 2022-08-04 編程語言

凱撒加密就是通過將字母移動一定的位數(shù)來實現(xiàn)加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一個固定數(shù)目進行偏移,被替換成密文。例如,當偏移量是2的時候,所有的字母B將被替換成D,C變成E,以此類推Y將變成A,Z變成B。由此可見,偏移量就是凱撒密碼加密和解密的密鑰。

下面使用python代碼來實現(xiàn)凱瑟密碼的加密解密。

import string
def kaisa_jiami(s,k):
? ? lower=string.ascii_lowercase#小寫英文字母
? ? upper=string.ascii_uppercase#大寫英文字母
? ? before=string.ascii_letters#全部英文字母字母
? ? after=lower[k:]+lower[:k]+upper[k:]+upper[:k]#建立循環(huán)字母
? ? table=''.maketrans(before,after)#創(chuàng)建映射表
? ? return s.translate(table)

def kaisa_jiemi(s,k):
? ? lower=string.ascii_lowercase
? ? upper=string.ascii_uppercase
? ? before=string.ascii_letters
? ? after=lower[k:]+lower[:k]+upper[k:]+upper[:k]
? ? table=''.maketrans(after,before)
? ? return s.translate(table)
def main():
? ? s=input("請輸入要加密的字符串:")
? ? k=int(input("請輸入一個整數(shù)密鑰:"))#將k轉(zhuǎn)換為整數(shù),默認輸入為字符
? ? print('需要加密的字符串為:',s)
? ? a=kaisa_jiami(s,k) ?
? ? print("加密后為:",a) ?
? ? b= kaisa_jiemi(a,k)
? ? print("解密后為:",b)
if __name__=='__main__':
? ? main()

運行結果

請輸入要加密的字符串:HELLO world
請輸入一個整數(shù)密鑰:3
需要加密的字符串為: HELLO world
加密后為: KHOOR zruog
解密后為: HELLO world

上述程序中主要用到了maketrans()和translate()兩個方法。下面讓我們來詳細看一下這兩個方法的使用方法。
translate() 方法根據(jù) maketrans() 方法給出的字符映射轉(zhuǎn)換表轉(zhuǎn)換字符串中的字符。

比如

import string
map = ''.maketrans('ABC123', 'abcDEF')#形成一個映射,將ABC123分別映射為abcDEF
s = "123ABC"  
s.translate(map)#按照map中的映射關系進行字符的替換。

?運行結果

'DEFabc'

原文鏈接:https://blog.csdn.net/wmx1117/article/details/105586265

欄目分類
最近更新