網(wǎng)站首頁 編程語言 正文
凱撒加密就是通過將字母移動一定的位數(shù)來實現(xiàn)加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一個固定數(shù)目進(jìn)行偏移,被替換成密文。例如,當(dāng)偏移量是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ù),默認(rèn)輸入為字符
? ? print('需要加密的字符串為:',s)
? ? a=kaisa_jiami(s,k) ?
? ? print("加密后為:",a) ?
? ? b= kaisa_jiemi(a,k)
? ? print("解密后為:",b)
if __name__=='__main__':
? ? main()
運行結(jié)果
請輸入要加密的字符串:HELLO world
請輸入一個整數(shù)密鑰:3
需要加密的字符串為: HELLO world
加密后為: KHOOR zruog
解密后為: HELLO world
上述程序中主要用到了maketrans()和translate()兩個方法。下面讓我們來詳細(xì)看一下這兩個方法的使用方法。
translate() 方法根據(jù) maketrans() 方法給出的字符映射轉(zhuǎn)換表轉(zhuǎn)換字符串中的字符。
比如
import string
map = ''.maketrans('ABC123', 'abcDEF')#形成一個映射,將ABC123分別映射為abcDEF
s = "123ABC"
s.translate(map)#按照map中的映射關(guān)系進(jìn)行字符的替換。
?運行結(jié)果
'DEFabc'
原文鏈接:https://blog.csdn.net/wmx1117/article/details/105586265
相關(guān)推薦
- 2023-01-23 Python+Qt身體特征識別人數(shù)統(tǒng)計源碼窗體程序(使用步驟)_python
- 2022-06-09 Python+OpenCV實現(xiàn)圖片中的圓形檢測_python
- 2023-02-12 React實現(xiàn)錨點跳轉(zhuǎn)組件附帶吸頂效果的示例代碼_React
- 2022-08-01 Android?WebView軟鍵盤遮擋輸入框方案詳解_Android
- 2022-09-27 使用Python?matplotlib繪制簡單的柱形圖、折線圖和直線圖_python
- 2022-06-01 C語言?詳細(xì)分析結(jié)構(gòu)體的內(nèi)存對齊_C 語言
- 2023-05-22 Redis數(shù)據(jù)結(jié)構(gòu)類型示例解析_Redis
- 2022-10-14 wget -c 斷點續(xù)傳命令
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支