利用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解释

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用DES算法对图像进行加密的基本步骤如下: 1. 选择一个合适的密钥:DES算法使用64位的密钥,其中8位用作奇偶校验位,剩下的56位作为真正的密钥。 2. 将图像分为固定大小的数据块:将图像按照固定的大小(例如8×8像素)划分为多个数据块。 3. 初始置换(IP):对每个数据块进行初始置换操作,将其重新排列。 4. 迭代加密过程:使用DES算法的16次迭代加密过程对每个数据块进行加密。每次迭代包括以下步骤: a. 执行扩展置换(E盒):将32位数据扩展为48位。 b. 与子密钥进行异或操作:将扩展的数据与相应轮次的子密钥进行异或操作。 c. 使用S盒进行替换:将48位数据分为8个6位的数据块,通过S盒进行替换得到32位的结果。 d. 执行P盒置换:对替换后的32位数据进行P盒置换操作。 e. 与左半部分进行异或操作:将P盒置换的结果与左半部分数据进行异或操作。 f. 交换左右半部分数据:交换左右半部分数据的位置。 5. 逆初始置换(IP-1):对每个数据块进行逆初始置换操作,将其重新排列。 6. 合并数据块:将加密后的所有数据块合并成一个加密图像。 请注意,以上仅是对图像进行加密的基本步骤,如果需要加密和解密过程的具体实现细节,还需要了解更多关于DES算法和图像处理的知识。此外,为了保证安全性,建议使用更强大的加密算法,如AES算法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向阳-Y.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值