python图像隐写_Python中的隐写 - Stepic

stepic 0.3使用最简单的方法来隐写图像。直接从模块报价:

def decode_imdata(imdata):

'''Given a sequence of pixels, returns an iterator of characters

encoded in the image'''

imdata = iter(imdata)

while True:

pixels = list(imdata.next()[:3] + imdata.next()[:3] + imdata.next()[:3])

byte = 0

for c in xrange(7):

byte |= pixels[c] & 1

byte <<= 1

byte |= pixels[7] & 1

yield chr(byte)

if pixels[-1] & 1:

break

机密数据的每一个字节的,再加上标志是否是最后一个字节,是隐藏在连续的三个像素。更确切地说,stepic使用每个像素的前三个分量(通常是RGB)的最低有效位。看到这非常难看图,对于具有每分量4位的RGBA流(D装置数据,E意味着结束流):

| pixel 0 | pixel 1 | pixel 2 |

image viewer sees: | rrrr gggg bbbb aaaa | rrrr gggg bbbb aaaa | rrrr gggg bbbb aaaa |

stepic sees: | ___D ___D ___D ____ | ___D ___D ___D ____ | ___D ___D ___E ____ |

由于由这种变化所引入的噪声是在已经“噪声”小图像(256次),你通常不能直观地察觉到这一点。这意味着这项技术的目标是实现的:数据隐藏在明显的视野中,因为没有人能够区分它自然发生的噪音。

This Works。至少,它适用于无损格式,如PNG。唉,JPG不是无损的,它的压缩很可能会改变至少一个编码位。只需要改变第九位就可以使这个方法变得毫无用处,因为隐藏的数据将被截断为单个字节。

在JPG图像中的隐写图仍然是可能的,在许多形式中,但你不能真正调整解码的像素值。一个更好的(但更复杂的)方法可能是隐藏压缩机估计的参数中的数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值