網(wǎng)站首頁 編程語言 正文
凱撒加密就是通過將字母移動一定的位數(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
相關推薦
- 2022-04-10 【抖音小程序】抖音小程序避免onClose重復回調(diào) 解決廣告重復回調(diào)
- 2022-07-22 python:實現(xiàn)打印從 0 到 n 的卡特蘭數(shù)算法(附完整源碼)
- 2022-03-23 .Net?Core微服務網(wǎng)關Ocelot基礎介紹及集成_自學過程
- 2023-02-06 Python類中__init__()?和self的詳細解析_python
- 2022-04-11 用C++實現(xiàn)SLR語法分析程序_C 語言
- 2022-04-06 用Python實現(xiàn)一個簡單的用戶系統(tǒng)_python
- 2022-03-24 .Net?Core服務治理Consul使用服務發(fā)現(xiàn)_自學過程
- 2023-11-26 解決:element ui表格表頭自定義輸入框單元格el-input不能輸入問題
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結構-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支