概述
题目:
DES加密。生成8个字节(64位)的DES密钥,对原始文件进行DES加密,存入密文文件中。用相同的密钥对DES密文解密,恢复原始的明文。
这里使用python的第三方库 pyDes 完成des加密
代码段仅支持输入数据为 数字和字母,不换行
直接上代码:
(des明文.txt :记录你要加密的数据,支持任何字符,支持换行记录
des密钥.txt :记录生成的密钥
des密文.txt : 记录加密后生成的密文)
from pyDes import des, CBC, PAD_PKCS5
import secrets
import binascii
import os
#写入文件
def write_txt1(name, content):
path = os.getcwd() + '\' + name + '.txt'
if os.path.exists(path):
print(name + '文件存在,覆盖原文件')
else:
print(name + '文件不存在,创建文件')
with open(path, 'w', encoding='utf8') as f: # 写入新文件
for i in content:
f.write(i + 'n')
f.close()
# 打开文件
def read_txt1(name):
content=[]
# with open(os.getcwd()+"\"+name+".txt","r",encoding='utf8') as f:
with open(name, "r", encoding='utf8') as f:
for i in f.readlines():
# i = i.strip('n')
i = i.rstrip('n')
content.append(i)
f.close()
return content
# 从指定序列中随机生成密钥
def pro_secretkey1():
secretkey = ''
for i in range(8):
secretkey += secrets.choice('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ')
write_txt1('des密钥',[secretkey])
return secretkey
# des加密
def des_encrypt(plaintext, secretkey):
iv = secretkey
k = des(secretkey, CBC, iv, pad=None, padmode=PAD_PKCS5)
en = k.encrypt(plaintext, padmode=PAD_PKCS5)
write_txt1('des密文', [binascii.b2a_hex(en).decode()])
#binascii.b2a_hex 将输入a转为2进制并以16进制显示返回b
return binascii.b2a_hex(en).decode()
# des解密
def des_descrypt(ciphertext, secretkey):
iv = secretkey
k = des(secretkey, CBC, iv, pad=None, padmode=PAD_PKCS5)
ciphertext = k.decrypt(binascii.a2b_hex(ciphertext), padmode=PAD_PKCS5)
return ciphertext
if __name__ == "__main__":
name='des明文'
path = os.getcwd()+"\"+name+".txt"
plaintext = read_txt1(path)[0]
print('明文为:', plaintext)
secretkey = pro_secretkey1()
print('密钥为:', secretkey)
#加密原文
ciphertext = des_encrypt(plaintext, secretkey)
print('密文为:', ciphertext)
#解密密文
des = des_descrypt(ciphertext, secretkey)
print('解密后:', des.decode())
运行截图:
如果对你有帮助,开源不易,请多支持点赞
最后
以上就是殷勤鞋子为你收集整理的python des加密的全部内容,希望文章能够帮你解决python des加密所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复