未加星标

Python3 图片隐写术

字体大小 | |
[开发(python) 所属分类 开发(python) | 发布者 店小二05 | 时间 2016 | 作者 红领巾 ] 0人收藏点击收藏

Python3 图片隐写术

本项目教程由FrostSigh发布在 实验楼 ,完整教程及在线练习地址: python3 图片隐写术

先看看下面两张图,有什么差别。


Python3 图片隐写术

看不出来是吧?其实右图中隐藏了一段文字,只是通过一般手段无法察觉,需要编码才能破解。这可不是烂大街的“图种”,而是用到了这种黑科技――隐写术。


Python3 图片隐写术

隐写术是一门关于信息隐藏的技巧与科学,所谓信息隐藏指的是不让除预期的接收者之外的任何人知晓信息的传递事件或者信息的内容。

这是维基百科中对隐写术的简介。隐写技术是信息隐藏技术中很重要的一种技术,它以图像、文本、音频、视频等数字媒体作为载体,将秘密信息嵌入到原始载体,并以不引起第三方注意的方式在公共信道上传输。如果说加密技术是保护消息的内容,那么数字隐写技术就是隐藏消息的存在。

作为不可信网络环境中的一种新型保密通信手段,隐写术在学术界和国防安全领域受到了普遍关注。

本节课程就将带你走入隐写术的大门。

项目名称:

Python3图片隐写术

项目简介:

通过Python3实现将关键信息隐藏在图片的效果,主要目的是为了不让预期接收者以外的人知晓传递的内容。与电视剧中使用特殊墨水传递信息一样,表面看就是一张什么都没写的白纸,实则暗藏着重要信息。

涉及知识点:

Pillow 模块

最低有效位

lambda 表达式递归

UTF-8 编码

项目效果图:

可以看到“施法”前后的图片肉眼看不出区别,然而图片却真实的隐藏了一些数据在里面。

实验原理:

还是引用 wikipedia 的解释:

载体文件(cover file)相对隐秘文件的大小(指数据含量,以比特计)越大,隐藏后者就越加容易。

因为这个原因,数字图像(包含有大量的数据)在因特网和其他传媒上被广泛用于隐藏消息。这种方法使用的广泛程度无从查考。例如:一个24位的位图中的每个像素的三个颜色分量(红,绿和蓝)各使用8个比特来表示。如果我们只考虑蓝色的话,就是说有2^8种不同的数值来表示深浅不同的蓝色。而像11111111和11111110这两个值所表示的蓝色,人眼几乎无法区分。因此,这个最低有效位就可以用来存储颜色之外的信息,而且在某种程度上几乎是检测不到的。如果对红色和绿色进行同样的操作,就可以在差不多三个像素中存储一个字节的信息。

更正式一点地说,使隐写的信息难以探测的,也就是保证“有效载荷”(需要被隐蔽的信号)对“载体”(即原始的信号)的调制对载体的影响看起来(理想状况下甚至在统计上)可以忽略。这就是说,这种改变应该无法与载体中的噪声加以区别。

(从信息论的观点来看,这就是说信道的容量必须大于传输“表面上”的信号的需求。这就叫做信道的冗余。对于一幅数字图像,这种冗余可能是成像单元的噪声;对于数字音频,可能是录音或者放大设备所产生的噪声。任何有着模拟放大级的系统都会有所谓的热噪声(或称“1/f”噪声),这可以用作掩饰。另外,有损压缩技术(如JPEG)会在解压后的数据中引入一些误差,利用这些误差作隐写术用途也是可能的。)

隐写术也可以用作数字水印,这里一条消息(往往只是一个标识符)被隐藏到一幅图像中,使得其来源能够被跟踪或校验。

总而言之,本实验便是利用图片四个颜色分量(rgba)的最低有效位(英语:Least Significant Bit,lsb)来隐藏信息(本实验隐藏的是文字)

本项目的详细代码及实现步骤可以在实验楼查看并在线完成:Python3 图片隐写术

更多Python经典项目: Python全部 - 课程


Python3 图片隐写术

本文开发(python)相关术语:python基础教程 python多线程 web开发工程师 软件开发工程师 软件开发流程

分页:12
转载请注明
本文标题:Python3 图片隐写术
本站链接:http://www.codesec.net/view/480515.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 开发(python) | 评论(0) | 阅读(31)