lsb隐写算法的代码
时间: 2023-09-02 21:07:32 浏览: 102
以下是一个基于Python的LSB隐写算法的示例代码:
```python
from PIL import Image
def encode_image(image_path, message):
img = Image.open(image_path)
binary_message = ''.join(format(ord(i), '08b') for i in message)
if img.mode != 'RGB':
img = img.convert('RGB')
width, height = img.size
index = 0
for row in range(height):
for col in range(width):
r, g, b = img.getpixel((col, row))
if index < len(binary_message):
# 修改最低有效位
img.putpixel((col, row), (r | int(binary_message[index]), g, b))
index += 1
return img
def decode_image(image_path):
img = Image.open(image_path)
binary_message = ''
if img.mode != 'RGB':
img = img.convert('RGB')
width, height = img.size
for row in range(height):
for col in range(width):
r, g, b = img.getpixel((col, row))
# 获取最低有效位
binary_message += str(r & 1)
# 将二进制字符串转换为ASCII码
message = ''
for i in range(0, len(binary_message), 8):
message += chr(int(binary_message[i:i + 8], 2))
return message
```
这个代码包含了两个主要函数:`encode_image` 和 `decode_image`。
`encode_image` 函数将指定的消息编码到指定的图像中。它读取指定的图像文件,将消息转换为二进制,并将其嵌入到图像的最低有效位中。最后,函数返回修改后的图像对象。
`decode_image` 函数从指定的图像中解码隐藏的消息。它读取指定的图像文件,提取图像中所有像素的最低有效位,并将它们转换为二进制字符串。最后,函数将二进制字符串转换为ASCII码,并返回原始消息。
阅读全文