LSB匹配算法 python实现
时间: 2023-08-02 07:04:54 浏览: 116
python实现BM匹配算法
LSB匹配算法是一种基于最低有效位(Least Significant Bit)的隐写术算法,用于在图像中隐藏秘密信息。下面是一个简单的Python实现示例:
```python
from PIL import Image
def hide_message(image_path, message):
image = Image.open(image_path)
width, height = image.size
# 将消息转换为二进制
binary_message = ''.join(format(ord(char), '08b') for char in message)
if len(binary_message) > width * height:
raise ValueError("消息过长,无法隐藏在图像中!")
# 逐像素修改最低有效位
index = 0
for y in range(height):
for x in range(width):
pixel = list(image.getpixel((x, y)))
# 修改蓝色通道的最低有效位
if index < len(binary_message):
pixel[2] = pixel[2] & 0xFE | int(binary_message[index])
index += 1
image.putpixel((x, y), tuple(pixel))
# 保存修改后的图像
image.save('hidden_image.png')
def reveal_message(image_path):
image = Image.open(image_path)
width, height = image.size
binary_message = ''
for y in range(height):
for x in range(width):
pixel = image.getpixel((x, y))
# 提取蓝色通道的最低有效位
binary_message += str(pixel[2] & 1)
# 将二进制消息转换为字符串
message = ''
for i in range(0, len(binary_message), 8):
byte = binary_message[i:i+8]
message += chr(int(byte, 2))
return message
# 示例用法
hide_message('original_image.png', '这是一个秘密消息')
revealed_message = reveal_message('hidden_image.png')
print(revealed_message)
```
这个示例中,`hide_message`函数将一个消息隐藏在给定的图像中,而`reveal_message`函数则从隐藏的图像中提取出消息。请注意,这个实现只能隐藏短文本消息,并且只使用了图像中的蓝色通道的最低有效位来存储信息。在实际应用中,可能需要更复杂的算法来隐藏和提取更大量的数据。
阅读全文