基于空间域的信息隐藏关键技术研究
实践题目:基于空间域的信息隐藏关键技术研究
目标是实现对320x240的灰度图像(样本自选,不能是lena图像)进行信息隐藏设计,应用空间域信息隐藏方法(例如LSB替换方法等)进行实验测试。对上述技术和方法进行实验、结果分析、比较等,特别是对其健壮性(抗攻击)进行分析。
实验报告要求
- 调研和算法说明,算法框图等;
- 有matlab仿真实验,有实验图形和实验结果分析,健壮性分析等;
- 5页以内的word文档。
方法种类
- LSB算法9(原始算法
- 伪随机置换
- 利用奇偶校验位
- 基于调色板的图像
- 基于量化编码的隐藏信息
- 在二值图像中隐藏信息
LSB(Least Significant Bits)算法
- 嵌入过程描述:选择一个载体元素的子集{j1, j2, j3…jm},其中共有L(m)个元素,用以隐藏秘密信息的L(m)个比特,然后再这个子集上执行替换操作,把最低比特位用秘密信息来替换。
- 提取过程描述:找到嵌入信息的伪装元素自己{j1,j2,j3…jm},从这些伪装对象中抽出最低比特位,排列之后组成秘密信息m。
- 载体位置的选择
- 从第一个元素开始嵌入,秘密信息嵌入完成后,后面未嵌入信息的载体嵌入伪随机序列
- 从第一个元素开始嵌入,秘密信息重复嵌入,直至载体结束。
- 发送方与攻击方一起使用一个伪装密钥k作为伪随机数发生器的种子,生成一个共同的伪随机序列,把这个伪随机序列与索引结合生成隐藏信息的载体子集,并将秘密信息嵌入载体。
j1=k1j_1 = k_1j1=k1
ji=ji−1+ki,i>=2j_i = j_{i-1} + k_i,i>=2ji=ji−1+ki,i>=2
伪随机置换
该算法描述的是当索引产生碰撞时的解决方法(如果对伪随机数发生器的输出不加任何限制的话,同一索引值可能出现多次,称这种情况为碰撞):
- 为了防止发生碰撞,发送端可以使用一个集合B用以记录所有已经使用过的载体索引值
- 当再次出现同样的索引值时,则放弃这个索引值,选择下一个元素。
最低比特位隐藏信息优缺点
优点:
- 算法简单,容易实现
- 隐藏容量较大,大部分都是私钥隐藏方法或者无密钥隐藏方法。
缺点:
- 安全性不高,如果伪装对象被叠加上一些噪声(人为干扰或者信道噪声),或者为了适应传输信道,对图像和声音进行了有损压缩,或者是攻击者有意的破坏等,都可以擦除隐藏的信息,使得接收者无法正确恢复出秘密信息。
利用奇偶校验位
- 将载体分成几个不重叠的区域,在一个载体区域中存储一个比特信息。
- 计算每个区域最低比特的奇偶校验位
- 并选择一个载体元素的最低比特位存放这个区域的奇偶校验位
- 嵌入信息时,在奇偶校验位上存放秘密信息。
- 如果秘密信息与奇偶校验位不匹配,则将该区域所有元素的最低比特位进行翻转,导致奇偶校验位与秘密信息相同。
基于调色板的图像
背景:
- 图像的表示方法有两种,一种实在图像矩阵中直接存放像素的实际数据;另一种是基于调色板的图像。
- 基于调色板的图像由两部分构成,一部分是调色板数据,它定义了n种颜色的索引对,每个索引对应的颜色值;另一部分是实际图像数据,它保存每一个像素的调色板索引,并不保存实际的颜色值。
- 当图像仅使用了一小部分颜色值时,这种方法可以大大减小文件的尺寸。
对于基于调色板的图像,LSB的隐藏信息有两种方法:
- 一种是对调色板的颜色向量LSB的修改。
- 另一种是对图像数据(索引数据)的LSB修改。
基于量化编码的信息隐藏
- 事先建立一个伪装密钥的表,表中为每一个茶凉分配了一个比特
- 通过改变载体信号之间的差分信号来隐藏信息
- 计算对应的差分信号
- 如果匹配,则差分信号不变
- 如果不匹配,则查表将最接近的差分信号替换
在二值图像中隐藏信息
- 首先将一个二值图像分为m个矩形图像区域
- 如果其中黑色像素的个数大于一半,则嵌入0,否则嵌入1
- 当需要嵌入的比特与所选区域的黑白像素比例不一致时,需要对像素进行调整
- 设定ɑ,当所选像素块一种颜色的百分比大于50%+3*ɑ时,视作无效块。
另一种算法描述:
- 在二值图像中,连续像素具有同种颜色的概率很高。
- 因此对相同颜色的像素块进行计数。
- 若嵌入信息为0,则使其个数为奇数,1则相反。
- 通过更改游程长度来嵌入秘密信息
LSB算法的实现部分
使用LSB算法嵌入秘密信息
- 嵌入的秘密信息:“the image is beautiful”
- 原始图片名:“test.bmp”
- 原始图片规格:320x240
- 原始图片通道数:单通道(即灰度图)
from PIL import Image### init
img_name = "test.bmp"### 将flag值规格化,即先转ascii码,再转二进制,再八位对齐,前面补零
def flag_to_binary(flag):strr = ""for i in range(len(flag)):strr += str(bin(ord(flag[i])).replace('0b','').zfill(8))print(strr)return strr### LSB算法的实现
def save_lsb_info(src, info, des):img = Image.open(src)img = img.convert('L')img.show()width, height = img.sizekey = flag_to_binary(info)num = 0for h in range(height):for w in range(width):value = img.getpixel((w,h))if num == len(key):breakvalue = value - value%2 + int(key[num])num += 1img.save(des + "test_lsb.bmp")### 调用
if __name__=='__main__':save_lsb_info(img_name, "the image is beautiful", '')
LSB算法提取秘密信息
from PIL import Image
import re### 将嵌入的二进制信息提取出来
def take_lsb(src):info = ""img = Image.open(src)width, high = img.sizefor h in range(high):for w in range(width):value = img.getpixel((w, h))#print(R, G, B)info += str(value % 2)#print(info)return info
### 将提取出来的二进制信息先转十进制,再转ascii码
def decode_info(info):flag = re.findall('.{8}', info)secret = ""for i in range(len(flag)):#print(flag[i])ten = int(flag[i], 2)#print(ten)asc = chr(ten)#print(asc)secret += ascreturn secret
### LSB算法后没有加噪的图片
img_name = "test_lsb.bmp"
flag = take_lsb(img_name)
info = decode_info(flag)
print(info[0:22])
输出结果为嵌入的秘密信息
鲁棒性分析
给图片进行加噪处理
分别进行四种方式加噪处理
- 加高斯噪声
- 加盐噪声
- 加胡椒噪声
- 加椒盐噪声
import numpy as np
import cv2
import matplotlib.pyplot as plt
import skimage.util as ski
from PIL import Imageplt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = Falseimg = cv2.imread("test_lsb.bmp", cv2.IMREAD_GRAYSCALE)
img_1 = img.copy()
img_gaussian_001 = ski.random_noise(img_1, mode="gaussian", seed=None, clip=True, mean=0, var=0.05)
img_gaussian_001 *= 255img_2 = img.copy()
img_salt = ski.random_noise(img_2, mode="salt", seed=None, clip=True, amount=0.1)
img_salt *= 255
img_3 = img.copy()
img_pepper = ski.random_noise(img_3, mode="pepper", seed=None, clip=True, amount=0.1)
img_pepper *= 255
img_4 = img.copy()
img_sp = ski.random_noise(img_4, mode="s&p", seed=None, clip=True, amount=0.1)
img_sp *= 255plt.subplot(221)
plt.title("高斯噪声图像")
plt.imshow(img_gaussian_001, cmap='gray')
plt.subplot(222)
plt.title("加盐噪声图像")
plt.imshow(img_salt,cmap='gray')
plt.subplot(223)
plt.title("加胡椒噪声图像")
plt.imshow(img_pepper,cmap='gray')
plt.subplot(224)
plt.title("加椒盐噪声图像")
plt.imshow(img_sp,cmap='gray')
plt.show()cv2.imwrite("img_gaussian_001.bmp", img_gaussian_001)
cv2.imwrite("img_salt.bmp", img_salt)
cv2.imwrite("img_pepper.bmp", img_pepper)
cv2.imwrite("img_sp.bmp", img_sp)
加噪图片显示如下
再使用上述提取算法提取信息
from PIL import Image
import re### 将嵌入的二进制信息提取出来
def take_lsb(src):info = ""img = Image.open(src)width, high = img.sizefor h in range(high):for w in range(width):value = img.getpixel((w, h))#print(R, G, B)info += str(value % 2)#print(info)return info### 将提取出来的二进制信息先转十进制,再转ascii码
def decode_info(info):flag = re.findall('.{8}', info)secret = ""for i in range(len(flag)):#print(flag[i])ten = int(flag[i], 2)#print(ten)asc = chr(ten)#print(asc)secret += ascreturn secret
### LSB算法后没有加噪的图片
img_name = "test_lsb.bmp"
flag = take_lsb(img_name)
info = decode_info(flag)
print(info[0:22])### LSB算法后加高斯噪声的图片
img_name = "img_gaussian_001.bmp"
flag = take_lsb(img_name)
info = decode_info(flag)
print(info[0:22])
### LSB算法后加盐噪声的图片
img_name = "img_salt.bmp"
flag = take_lsb(img_name)
info = decode_info(flag)
print(info[0:22])
### LSB算法后加胡椒噪声的图片
img_name = "img_pepper.bmp"
flag = take_lsb(img_name)
info = decode_info(flag)
print(info[0:22])
### LSB算法后加椒盐噪声的图片
img_name = "img_sp.bmp"
flag = take_lsb(img_name)
info = decode_info(flag)
print(info[0:22])
结果分析
the image is beautiful
Ý+¸6 2áj-v‰Y~d†I„QR
tèå imiçu is`bwautif÷n
the image ib bE!e4iful
thg hmame ès"bEautiFui
- 经过高斯加噪生成的图片,LSB算法所嵌入的信息全部丢失;
- 经过盐噪声,胡椒噪声,椒盐噪声生成的图片,LSB算法嵌入的信息丢失大半;
- 可见,使用LSB算法所嵌入的信息极易被噪声干扰,导致信息隐藏的目的失效;
- LSB算法鲁棒性不强,需要对其进行进一步改进,以抵御噪声干扰;
基于空间域的信息隐藏关键技术研究相关推荐
- matlab信息隐藏算法,实验四--基于DCT域的信息隐藏算法
<实验四--基于DCT域的信息隐藏算法>由会员分享,可在线阅读,更多相关<实验四--基于DCT域的信息隐藏算法(6页珍藏版)>请在人人文库网上搜索. 1.实验四 基于DCT域的 ...
- 【看论文】之《基于双目视觉的棚室番茄采摘关键技术研究_胡慧明》
论文信息 题目:<基于双目视觉的棚室番茄采摘关键技术研究> 作者:胡慧明 单位:湖北工业大学 论文性质:硕士学位论文 提交日期:2018.5.31 摘要 绪论 国外研究现状 20世纪60年 ...
- 基于Android平台的虚拟试衣关键技术研究
摘要:首先根据角点检测方法自动获取人体关键尺寸:然后根据实例检索算法获取与客户体形最接近的模特试衣效果:再使用移植配准与肤色融合实现头像移植:最后再Andriod平台上实现初步的系统模拟,为提高网上服 ...
- android手机舆情分析,基于Android移动互联网舆情管理关键技术研究
摘要: 移动互联网的便捷性,很大程度上改变了人们生活生产的方式,人们能更轻易的获取新闻资讯,也更容易在互联网上发表自己的观点和意见.使得互联网舆情处于一个大量爆发状态,个别不法分子在其中煽风点火,极易 ...
- 论文:基于数据挖掘的网络入侵检测关键技术研究-郭春
目录 1.文章主要工作: 1.1 设计了一种适用于入侵检测的特征提取方法.(降维)DSFE:Distance-sum based feature extraction method; 1.2 设计了一 ...
- 基于深度学习的信息隐藏技术的研究总结(一)
信息隐藏技术的相关知识总结 你好! 本人关于信息隐藏方面的研究很久了,主要是利用深度学习方面的技术来实现.由于电脑等原因,一些东西就找不到了,所以想通过写博客的方式进行记录,一方面是对学过的东西.技术 ...
- 2018FME博客大赛-基于FME的不同比例尺线面要素 一致性检测关键技术研究
编 写:曹 文 涛 武汉市测绘研究院 二○一八年三月 概述 随着地理信息系统技术的不断发展和广泛应用,各省市国土测绘部门都纷纷建立起了各种比例尺的基础地理信息数据库,其提供的矢量地理数据为社会各行业 ...
- 信息安全之加密域可逆信息隐藏
前面四篇文章主要介绍了图像置乱加密的安全性问题,本篇文章介绍一种图像加密算法的应用算法,图像加密域可逆信息隐藏.以文献1为例,介绍一种<基于预测误差分类置乱的图像加密域可逆信息隐藏>算法[ ...
- 基于Andro平台的软件开发若干关键技术研究(笔记)
基于Android平台的软件开发若干个关键技术研究 摘要:随着移动智能终端的飞速发展和广泛普及,移动GIS应用正迅速迅速成长,并且成为最有发展前景的热点之一.作为移动GIS应用的分支,基于Androi ...
最新文章
- hdu 1166 敌兵布阵(树状数组)
- hive2.1.1安装配置
- PNAS:张航课题组揭示人类为何“扭曲”概率信息
- 阿里云一键建站产品,阿里云自营建站-中小企业建站首选...
- 面试无忧之Zookeeper总结心得
- 在Windows XP系统登录Active Directory域
- 【报告分享】2021年中国数字经济就业发展研究报告.pdf(附下载链接)
- 服务器linux杀网页木马,一次Linux服务器木马查杀经历
- BI_01_一个BI工具的痛点
- 【C语言】充当右值时,数组名前加不加的区别
- 如何发送电子邮件到别人邮箱?
- qq2018内测android,社交无止境:QQ for Android 4.7内测版
- dingo php,Laravel+Dingo/Api 自定义响应 | 码农网
- 微信小游戏排行榜卡顿或无法滑动
- RationalDMIS 2020 RPS(6点迭代)
- 超详细的Spring Boot教程,搞定面试官!
- harbor 下载地址(国内代理)
- DevExpress中实现给GridControl下的GridView表格修改指定行、列的背景颜色和获取选择行的信息
- Unittest-跳过
- 趣店季报图解:营收环比降14% 大白汽车收入近6亿
热门文章
- 做了8年前端,感谢那些优秀的后端,陪伴我工作,教会我成长
- python文件处理方式
- Graphql中我们应该用什么姿势来实现Resolver?
- JAVA卸载报错无法访问网络位置
- 2021年焊工(初级)免费试题及焊工(初级)实操考试视频
- python知识点智能问答_基于检索的智能问答
- Java中Set接口
- AI 与合成生物学「联姻」的五大挑战:技术、数据、算法、评估与社会学
- Selenium 循环删除页面元素
- c语言中scanf(“%d %d\n“)的问题