利用Cryptodomeo库使用DES算法对信息进行加密
Posted 向阳-Y.
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用Cryptodomeo库使用DES算法对信息进行加密相关的知识,希望对你有一定的参考价值。
本文介绍使用Cryptodome的方法调用DES加密算法:DES源代码在此处
其中要使用Cryptodome库,需要使用以下方法安装:
pip install pycryptodomex
使用DES加密:
#! py -3
# encoding:utf-8
from Cryptodome.Cipher import DES
import binascii
# DES加密数据的长度须为8的的倍数,不够可以用其它字符填充
text = '加密我。'
if len(text) % 8 != 0:
text = text + " " * (8 - len(text) % 8)
# 密钥:必须为8字节
key = b'12345678'
# 使用 key 初始化 DES 对象,使用 DES.MODE_ECB 模式
des = DES.new(key, DES.MODE_ECB)
# 加密
result = des.encrypt(text.encode()) #将text转换为2进制,
print('加密后的数据:', result)
# 转为十六进制 binascii 的 b2a_hex 或者 hexlify 方法
print('转为十六进制:', binascii.b2a_hex(result))
# 解密
print('解密后的数据:', des.decrypt(result).decode('utf-8'))
以上代码还存在某些小bug,比如DES加密输入两个字:中国,会存在加密数据不为8的的倍数
以下为修改思路:UTF-8一个中文占3个字节,剩下的交给读者去完善了!
text = input("请输入加密的铭文")
bin_of_text = text.encode()
if len(bin_of_text) % 8 != 0:
text = text + " " * (8 - len(bin_of_text) % 8)
print(len(text))
代码解释:
encode解释
以上是关于利用Cryptodomeo库使用DES算法对信息进行加密的主要内容,如果未能解决你的问题,请参考以下文章