Python實(shí)現(xiàn)密鑰密碼(加解密)實(shí)例詳解
密鑰密碼

''' 如密鑰短語密碼為: university -> universty 明文: abcdefghijklmnopqrstuvwxyz 密文:jklmopqwxzuniverstyabcdfgh '''
構(gòu)造映射字典
# 構(gòu)造映射 asc ---> crypt
def dic(x):
list_x =[]
list_z = []
for i in x:
list_x.append(ord(i))
for i in range(97,123):
if i not in list_x:
list_x.append(i)
list_ = list_x[26-len(x)-1:]
cr = list_+list_x[:26-len(list_)]
for i in range(97,123):
list_z.append(i)
return dict(map(lambda x,y:[x,y],list_z,cr))
# 構(gòu)造映射 crypt ---> asc
def dic_2(x):
list_x =[]
list_z = []
for i in x:
list_x.append(ord(i))
for i in range(97,123):
if i not in list_x:
list_x.append(i)
list_ = list_x[26-len(x)-1:]
cr = list_+list_x[:26-len(list_)]
for i in range(97,123):
list_z.append(i)
return dict(map(lambda x,y:[x,y],cr,list_z))
密鑰去重
# 密鑰去重
def remove(x):
unique_x = []
for i in x:
if i not in unique_x:
unique_x.append(i)
return unique_x
加解密
# 加密
def encode():
x = input('請(qǐng)輸入密鑰字符:')
if not x.isalpha():
print('請(qǐng)輸入正確的密鑰格式!')
exit(0)
s = input('請(qǐng)輸入明文:')
print('加密后字符:',end='')
unique_x = remove(x)
dic_ = dic(unique_x)
for i in s:
if i.isspace():
print(' ', end='')
else:
print(chr(dic_[ord(i)]),end='')
# 解密
def decode():
x = input('請(qǐng)輸入密鑰字符:')
if not x.isalpha():
print('請(qǐng)輸入正確的密鑰格式!')
exit(0)
s = input('請(qǐng)輸入密文:')
print('解密后字符:',end='')
unique_x = remove(x)
dic_ = dic_2(unique_x)
for i in s:
if i.isspace():
print(' ',end='')
else:
print(chr(dic_[ord(i)]),end='')
程序入口
# 輸入指令
answer = input(f'請(qǐng)輸入所需的操作:編碼/E or 解碼/D: ')
try:
if answer.upper() == 'E':
encode()
elif answer.upper() == 'D':
decode()
else:
print('輸入錯(cuò)誤!')
except KeyError:
print('請(qǐng)正確輸入小寫字母!')
實(shí)現(xiàn)效果
注:可以輸入空格
輸出大小寫:請(qǐng)自行修改
請(qǐng)輸入所需的操作:編碼/E or 解碼/D: e
請(qǐng)輸入密鑰字符:university
請(qǐng)輸入明文:abcdefghijklmnopqrstuvwxyz
加密后字符:jklmopqwxzuniverstyabcdfgh請(qǐng)輸入所需的操作:編碼/E or 解碼/D: d
請(qǐng)輸入密鑰字符:university
請(qǐng)輸入密文:jklmopqwxzuniverstyabcdfgh
解密后字符:abcdefghijklmnopqrstuvwxyz
到此這篇關(guān)于Python實(shí)現(xiàn)密鑰密碼(加解密)的文章就介紹到這了,更多相關(guān)python 密鑰密碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python 實(shí)用技巧之利用Shell通配符做字符串匹配
這篇文章主要介紹了Python 實(shí)用技巧之利用Shell通配符做字符串匹配的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08
Python定時(shí)任務(wù)sched模塊用法示例
這篇文章主要介紹了Python定時(shí)任務(wù)sched模塊用法,結(jié)合實(shí)例形式分析了定時(shí)任務(wù)sched模塊的基本功能、參數(shù)含義、多線程定時(shí)任務(wù)等相關(guān)操作技巧,需要的朋友可以參考下2018-07-07
Python爬取網(wǎng)頁的所有內(nèi)外鏈的代碼
這篇文章主要介紹了Python爬取網(wǎng)頁的所有內(nèi)外鏈,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04
python中mediapipe庫踩過的坑實(shí)戰(zhàn)記錄
MediaPipe是由google制作的開源的、跨平臺(tái)的機(jī)器學(xué)習(xí)框架,可以將一些模型部署到不同的平臺(tái)和設(shè)備上使用的同時(shí),也能保住檢測(cè)速度,下面這篇文章主要給大家介紹了關(guān)于python中mediapipe庫踩過的坑的相關(guān)資料,需要的朋友可以參考下2023-04-04

