LSB低位隐写

原理

基于不可感知的要求,即数据的变化几乎不会引起使用的者的察觉,将水印信息嵌入到数据的最低有效位(Least Significant Bit),也就是将图片的RGB数值转换为二进制数据,然后用水印替换掉最低位,这种变化对于人眼来说是不可察觉的。当然,水印的形式也是多种多样的,有图片,文字等。这里主要讲文字(图片还是没搞太懂,之后肯定会学会的,立个flag!!)

注意!!

1.预先下的包(py代码解决)

from PIL import Image

2.LSB低位隐写一般用于bmppng图片

思路

(1)获取要隐藏的数据,一般这里不管是什么,我们都可以理解为字符串。
(2)将获取到的字符串二值化,即按照一定规则转换为二进制数据,一般是8位(不涉及中文隐写,中文占2个),不够的前面补0,一定要测试好对应的解码方法。
(3)准备好宿主图像,安装好python环境和PIL。
(4)获取图像信息(主要是高度和宽度),根据二值化后的字符串的长度,对宿主图像的像素进行遍历,然后将数据依次写入对应像素的最低有效位,写入完成之后跳出循环,对目标图像进行持久化即可得到载密图像。

代码


120
121
122
123
124
125
#coding=utf-8
#coding=utf-8
try:
    from PIL import Image
    from PIL import ImageFile
except:
    import os
    os.system('pip install Pillow')
    from PIL import Image
    from PIL import ImageFile

ImageFile.LOAD_TRUNCATED_IMAGES=True

def full_eight(str):
    return str.zfill(8)
def get_text_bin(strr):
    string=""
    s_text=strr.encode()
    for i in range(len(s_text)):
        string=string+full_eight(bin(s_text[i]).replace('0b',''))
    return string
def mod(x,y):
    return x%y
def tell_you_bad(str1,str2,str3):
    im=Image.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值