des图像加密解密代码
时间: 2024-01-13 20:04:10 浏览: 46
以下是一个简单的DES图像加密解密的示例代码:
```python
from Crypto.Cipher import DES
from PIL import Image
def encrypt_image(image_path, key):
# 打开图像文件
im = Image.open(image_path)
# 将图像转换为RGB模式
im = im.convert("RGB")
# 获取图像的宽度和高度
width, height = im.size
# 创建一个新的图像对象,用于保存加密后的图像
encrypted_im = Image.new("RGB", (width, height))
# 创建DES加密器
cipher = DES.new(key, DES.MODE_ECB)
# 对每个像素进行加密
for x in range(width):
for y in range(height):
# 获取当前像素的RGB值
r, g, b = im.getpixel((x, y))
# 将RGB值转换为字节流
data = bytes([r, g, b])
# 加密字节流
encrypted_data = cipher.encrypt(data)
# 将加密后的数据写入新的图像对象
encrypted_im.putpixel((x, y), tuple(encrypted_data))
# 保存加密后的图像
encrypted_im.save("encrypted_image.png")
def decrypt_image(image_path, key):
# 打开加密后的图像文件
encrypted_im = Image.open(image_path)
# 获取图像的宽度和高度
width, height = encrypted_im.size
# 创建一个新的图像对象,用于保存解密后的图像
decrypted_im = Image.new("RGB", (width, height))
# 创建DES解密器
cipher = DES.new(key, DES.MODE_ECB)
# 对每个像素进行解密
for x in range(width):
for y in range(height):
# 获取当前像素的RGB值
r, g, b = encrypted_im.getpixel((x, y))
# 将RGB值转换为字节流
data = bytes([r, g, b])
# 解密字节流
decrypted_data = cipher.decrypt(data)
# 将解密后的数据写入新的图像对象
decrypted_im.putpixel((x, y), tuple(decrypted_data))
# 保存解密后的图像
decrypted_im.save("decrypted_image.png")
# 加密图像
image_path = "image.png"
key = b"01234567" # 8字节的密钥
encrypt_image(image_path, key)
# 解密图像
encrypted_image_path = "encrypted_image.png"
decrypt_image(encrypted_image_path, key)
```
注意:这个示例代码仅用于演示目的,实际使用中需要根据具体需求进行修改和完善。另外,确保安装了 `pycryptodome` 和 `Pillow` 这两个库,可以使用 `pip install pycryptodome pillow` 命令进行安装。