精华内容
下载资源
问答
  • 上机实验报告 课程名称 数据加密与PKI技术 实验名称LSB图像信息隐藏原理 姓名 学号 班级 指导教师乔明秋 实验日期 实验成绩 一实验目的 1掌握LSB图像信息隐藏原理 2简单使用matlab工具 二实验环境 计算机一台 Matlab...
  • 【最全的】直方图平移信息隐藏原理及代码(matlab实现)可逆信息隐藏直方图平移功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个...

    可逆信息隐藏

    将秘密信息,隐藏在图像、音频和视频等载体中,以实现对其保护或秘密信息的传输。接收者可以恢复原始图像,并提取出秘密信息。

    直方图

    随机一张png图像的直方图

    每一幅图像都有它的直方图,横坐标是灰度值,纵坐标是该灰度值对应的像素点的数量。直方图中的每一个竖条就称为一个bin。一幅直方图中最高的那个点,就称为峰点P。最低的那个点(通常为0),叫做零点Z。

    直方图平移

    将峰点与零点之间的所有bin向左或者向右平移一位,那么就多出来一个空白的bin。我们可以利用这个bin来嵌入秘密信息。

    具体做法为:
    若P>Z,则将Z+1到P-1的所有bin向左平移一位;这样P-1的bin就空出来了
    若P<Z,则将P+1到Z-1的所有bin向右平移一位;这样P+1的bin就空出来了

    对应在代码中的操作,就是判断某个点的灰度值是否在p~z之间,然后对应灰度值加1或者减1即可。

    信息嵌入

    在这里插入图片描述

    计算机中存储的信息都是二进制的,要么是0,要么是1。以P>Z为例,由于P-1的bin空出来了。于是我们把为0的秘密信息存放在灰度值为P的像素中,把为1的秘密信息存在灰度值为P-1的像素中。
    具体的代码操作,就是依次找到图像中灰度值为P的像素点,若要嵌入的秘密信息为0,则该点的灰度值不变。若要嵌入的秘密信息为1,则该点的灰度值减1。在图像中的显示,就相当于把峰值点的bin切分成了两部分,一部分嵌入秘密信息0的还在P位置,另一部分嵌入秘密信息1的在P-1的位置。由于P-1的灰度值已经被空出来了(直方图平移), 所以我们这样操作是可以恢复原始信息与原始图像的。

    (当P<Z时,P+1的bin空出来了,在P像素中嵌入0,在P+1中嵌入1,其他操作相同。)

    信息提取

    提取信息时,我们找到图中所有灰度值为P,和P-1的像素。对于灰度值为P的像素提取信息0,对于灰度值为P-1的像素提取秘密信息1。如此一来就能恢复秘密信息了。
    (当P<Z时,在P像素中提取0,在P+1中提取1,其他操作相同。)

    图像恢复

    把位于P和Z之间的所有bin相应地往回平移一位即可。

    最后附上matlab代码一份,如有错误还请指正。(本实验采用的是灰度图像,灰度值在0—255之间)

    % 直方图平移
    
    clear;clc;
    % img_org为原始图像,img也是原始图像,用于接下来的一系列操作,把字符串换成你要处理的图片
    img_org = imread('1.png');
    img = img_org;
    [M,N] = size(img);
    
    % 将图像的直方图存储为数组,graylevel代表灰度值,counts代表每一灰度对应的像素数量 
    [counts, graylevel] = imhist(img);
    [maxcount,maxgraylevel] = max(counts);
    
    % 找到count为0的点,若没有,就把灰度值为254的点的灰度值改为255,由此空出254的位置
    mingraylevel = 0;
    flag = true;
    for i=1:length(graylevel)
        if(counts(i)==0 && flag)
            mingraylevel = i;
            flag=false;
        end
    end
    % if(flag==false)
    %     for  i=1:M
    %         for j=1:N
    %             if(img(i,j) == 254)
    %                 img(i,j) = 255;
    %             end
    %         end
    %     end
    % end
    
    % 这里是判断峰值点与零点哪个灰度值比较大的一个flag
    maxbigger = true;
    
    % 直方图平移,也就是灰度值位于两峰值之间的像素点的灰度加一或者减一,空出峰值左边或者右边的一个bin
    % 分为两种情况,峰值最高点的像素大于(或者小于)峰值为0的像素
    
    if(mingraylevel > maxgraylevel)
        maxbigger = false;
        for i=1:M
            for j=1:N
                if( img(i,j) > maxgraylevel && img(i,j) <mingraylevel)
                    img(i,j) = img(i,j) + uint8(1);
                end
            end
        end
    else
        for i=1:M
            for j=1:N
                if( img(i,j) < maxgraylevel && img(i,j) > mingraylevel)
                    img(i,j) = img(i,j) - uint8(1);
                end
            end
        end
    end
    
    
    % 产生随机秘密信息
    % Max Embedding Capcity,最大嵌入量为峰值点P对应的像素的数量
    mec = counts(maxgraylevel);
    rng(180)
    msg = round(rand(1,mec));
    count = 1;
    
    
    % 嵌入秘密信息
    if(maxbigger)
        for i = 1:M
            for j = 1:N
                if(img(i, j) == maxgraylevel)
                    % 若带嵌入的信息为1,则将该点灰度值加1
                    if( msg(count) == 1 )
                        img(i, j) = img(i, j) - uint8(1);
                        count = count + 1;
                    else % 否则将改点的灰度值加0,也就是不进行任何操作,只需要把count+1 
                        count = count + 1;
                    end
                end
            end
        end
    else
        for i = 1:M
            for j = 1:N
                if(img(i, j) == maxgraylevel)
                    % 若带嵌入的信息为1,则将该点灰度值加1
                    if( msg(count) == 1 )
                        img(i, j) = img(i, j) + uint8(1);
                        count = count + 1;
                    else % 否则将改点的灰度值加0,也就是不进行任何操作,只需要把count+1 
                        count = count + 1;
                    end
                end
            end
        end
    end
    
    
    % 提取秘密信息
    times = 1;
    extract_msg = zeros(1,mec);
    if(maxbigger)
        for i = 1:M
           for j = 1:N
               if( img(i, j) == maxgraylevel )
                   extract_msg(times) = 0;
                   times = times + 1; 
               elseif( img(i, j) == (maxgraylevel - 1))
                  
                   extract_msg(times) = 1;
                   times = times + 1;
               end
           end
        end
    else
        for i = 1:M
           for j = 1:N
               if( img(i, j) == maxgraylevel )
                   extract_msg(times) = 0;
                   times = times + 1; 
               elseif( img(i, j) == (maxgraylevel + 1))
                   extract_msg(times) = 1;
                   times = times + 1;
               end
           end
        end
    end
    
    
    
    
    %% 验证机密信息是否相等
    
    if(msg ~= extract_msg)
        disp("秘密信息不同")
    else
        disp("秘密信息相同")
    end
    
    
    
    % 将嵌入的秘密消息去除
    if(maxbigger)  
        for i=1:M
            for j=1:N             
               if(img(i,j)==maxgraylevel-uint8(1))
                   img(i,j) = maxgraylevel;
               end
            end
        end 
    else
        for i=1:M
            for j=1:N             
               if(img(i,j)==maxgraylevel+uint8(1))
                   img(i,j) = maxgraylevel;
               end
            end
        end   
    end
    
    
    
    % 直方图平移回去,恢复原始图像
    if(maxbigger)   
        for i=1:M
            for j=1:N           
                if( img(i,j) < maxgraylevel && img(i,j) > mingraylevel)
                    img(i,j) = img(i,j) + uint8(1);
                end
            end
        end
    else
        for i=1:M
            for j=1:N            
                if( img(i,j) > maxgraylevel && img(i,j) <mingraylevel)
                    img(i,j) = img(i,j) - uint8(1);
                end
            end
        end
    end
    
    
    if(img == img_org)
        disp("恢复图像相同")
    else
        disp("恢复图像不同")
    end
    
    for i=1:M
        for j=1:N
            if(img(i,j)~=img_org(i,j))
                disp(i+"不同"+j)
            end
        end
    end
    
    
    
    
    
    
    
    
    
    
    
    
    

    参考资料:
    代码参考: https://blog.csdn.net/V1AN_zzz/article/details/100829215
    论文参考:基于直方图平移的安全可逆信息隐藏算法 (崔炳德)

    展开全文
  • 信息隐藏原理及应用课程笔记

    千次阅读 2018-08-26 15:51:32
    引言 三个领域:隐写术;数字水印;...信息隐藏的模型 Simmons模型 通信系统模型分析 隐写术的安全模型分析 基于通信的水印模型 感知模型 信息隐藏算法 位平面算法 嵌入算法 调色板算法...

    引言

    三个领域:隐写术;数字水印;隐蔽通道;
    隐写术:看不见的墨水;字母隐藏;
    数字水印:讲标识信息嵌入载体,可见或者不可见。

    水印系统的指标

    • 不可感知性
    • 鲁棒性
    • 安全性
    • 安全性
    • 秘钥的唯一性
    • 嵌入的有效性
    • #

    信息隐藏的模型

    • Simmons模型
    • 通信系统模型分析
    • 隐写术的安全模型分析
    • 基于通信的水印模型
    • 感知模型

    信息隐藏算法

    • 位平面算法
    • 嵌入算法
    • 调色板算法
    • 最低有效位算法
    • Hide and Seek隐写分析软件
    • 离散傅里叶变换DCT
    • 离散余弦变换DCT

    破坏隐藏信息

    • 增加噪声
    • 有损压缩
    • 扭曲,裁剪 ,旋转,模糊化
    • 分析评价指标:准确性,实用性,复杂度
    展开全文
  • 同样的道理,我们利用之前的矩阵运算公司可以推导出DCT反变换相应的矩阵形式: DCT可逆信息隐藏 原理:利用DCT变换的矩阵进行操作,有很多种方法,这里举出其中一种方法: 隐藏方法:主要是利用载体中两个特定数的...

    DCT变换

    DCT又称离散余弦变换,是一种块变换方式,只使用余弦函数来表达信号,与傅里叶变换紧密相关。常用于图像数据的压缩,通过将图像分成大小相等(一般为8*8)的块,利用DCT对其进行变换,得到更加简洁的数据。因为图像像素间存在较大的空间相关性,DCT可以大大减小这些相关性,使图像能量集中在左上角区域,从而利于数据压缩。变换后得到的数据称为DCT系数。这一过程是无损的。

    DCT变换的代码实现分为两种:

    1.使用dct函数

    % 读取灰度图像
    img = imread('lena.pgm');
    % dct2 是2维dct变换函数,得到一个与图像大小相同的二维矩阵
    dct_mtx = dct2(img);
    % idct2 是逆2维dct变换函数,得到原图像矩阵
    img_idct = idct2(dct_mtx); 
    

    2.使用dctmtx函数

    io = double(imread("lena.pgm"));
    T = dctmtx(8);
    % 对载体图像进行DCT变换
    DCT_org = blkproc(io,[8 8], 'P1*x*P2',T, T'); 
    % 对DCT 矩阵进行逆变换
    DCT_reverse = blkproc(DCT_org,[8 8], 'P1*x*P2',T', T); 
    

    DCT 变换数学原理

    数学原理转自:点击这里

    一维DCT变换:

    一维DCT变换时二维DCT变换的基础,所以我们先来讨论下一维DCT变换。一维DCT变换共有8种形式,其中最常用的是第二种形式,由于其运算简单、适用范围广。我们在这里只讨论这种形式,其表达式如下:
    在这里插入图片描述
    其中,f(i)为原始的信号,F(u)是DCT变换后的系数,N为原始信号的点数,c(u)可以认为是一个补偿系数,可以使DCT变换矩阵为正交矩阵。

    二维DCT变换

    二维DCT变换其实是在一维DCT变换的基础上在做了一次DCT变换,其公式如下:
    在这里插入图片描述
    由公式我们可以看出,上面只讨论了二维图像数据为方阵的情况,在实际应用中,如果不是方阵的数据一般都是补齐之后再做变换的,重构之后可以去掉补齐的部分,得到原始的图像信息,这个尝试一下,应该比较容易理解。

    另外,由于DCT变换高度的对称性,在使用Matlab进行相关的运算时,我们可以使用更简单的矩阵处理方式:
    在这里插入图片描述

    二维DCT逆变换

    在图像的接收端,根据DCT变化的可逆性,我们可以通过DCT反变换恢复出原始的图像信息,其公式如下:
    在这里插入图片描述
    同样的道理,我们利用之前的矩阵运算公司可以推导出DCT反变换相应的矩阵形式:
    在这里插入图片描述

    DCT可逆信息隐藏

    原理:利用DCT变换的矩阵进行操作,有很多种方法,这里举出其中一种方法【原始图像有损,提取信息无损】:

    隐藏方法:主要是利用载体中两个特定数的相对大小来表
    示隐藏信息。发送方和接收方事先约定好嵌入过程中所使用
    的两个DCT系数的位置(为了隐藏的健壮性和不可觉察性,这
    两个 DCT 系数应该在 DCT 的中频系数中选择)。例如,设定
    (u,v) 和 (m,n) 为所选定的两个系数的坐标。嵌入过程为:如果
    Bi(u,v)> Bi(m,n) ,就代表隐藏信息“1”,如果 Bi(u,v)< Bi(m,n) 就代
    表 隐 藏 信 息“0”。 如 果 需 要 隐 藏 的 信 息 位 为 1,但 是
    Bi(u,v)<Bi(m,n) 那么就把这两个系数交换,最后发送方通过二
    维逆DCT变换将图像转化为空间域进行传输。
    提取方法:接收方接收到图像后,对图像进行二维DCT变
    换,通过比较每一块中约定位置的DCT系数的相对大小,得到
    隐藏信息的比特串,从而提取出秘密信息。

    附上matlab代码一份

    
    
    % DCT 变换信息隐藏
    
    io = double(imread("lena.pgm"));
    imshow(io)
    % 待嵌入的秘密信息msg
    msg = [1,0,1,1];
    % 用于计数,嵌入完成后停止操作。
    count = length(msg);
    org_msg = [1,0,1,1];
    T = dctmtx(8);
    DCTrgb = blkproc(io,[8 8], 'P1*x*P2',T, T'); % 对载体图像进行DCT变换
    [row,col]=size(DCTrgb);
    row=floor(row/8);
    col=floor(col/8);
    alpha=0.02;
    k = 1;
    temp=0;
    for i=0:(row - 1)
        for j=0: (col -1)
            irow = i * 8;
            jcol = j * 8;
            if k <= count
                if msg(k) == 0
                    %选择(5,2),(4,3)这两对系数,
                    % 策略是(5,2)的DCT系数 <4,3)时,表示嵌入了0  
                    % 如果(5,2> (4,3) 那我们把两个系数交换,还表示嵌入了0
                    if DCTrgb(irow + 5, jcol + 2) < DCTrgb(irow + 4,jcol + 3)
                        temp = DCTrgb(irow + 5, jcol + 2);
                        DCTrgb(irow + 5, jcol + 2) = DCTrgb(irow + 4,jcol + 3);
                        DCTrgb(irow + 4, jcol + 3) = temp;
                    end
                else
                    if DCTrgb(irow + 5, jcol + 2) > DCTrgb(irow + 4,jcol + 3)
                        temp = DCTrgb(irow + 5, jcol + 2);
                        DCTrgb(irow + 5, jcol + 2) = DCTrgb(irow + 4,jcol + 3);
                        DCTrgb(irow + 4, jcol + 3) = temp;
                    end
                end
                %将原本小的系数变的更小,使系数差变大
                if DCTrgb(irow + 5, jcol + 2) < DCTrgb(irow + 4,jcol +3)
                    DCTrgb(irow + 5, jcol + 2) = DCTrgb(irow +5, jcol +2) - alpha;
                else
                    DCTrgb(irow + 4, jcol + 3) = DCTrgb(irow + 4, jcol +3) - alpha;
                end
                k = k + 1;
            end
        end
    end
    wi=blkproc(DCTrgb,[8 8],'P1*x*P2',T',T); %嵌入信息的载体DCT变换,恢复图像
    
    
    
    % 提取消息
    
    % ext_msg是提取出的秘密信息
    ext_msg = [];
    T=dctmtx(8);
    DCTcheck=blkproc(wi,[8 8],'P1*x*P2',T,T'); %对隐秘图像进行DCT变换
    [row,col]=size(DCTcheck);
    row=floor(row/8);
    col=floor(col/8);
    k = 1;
    for i=0:(row - 1)
        for j=0: (col -1)
            irow = i * 8;
            jcol = j * 8;
            %通过比较(5,2),(4,3)这两对系数,判断隐藏的信息是1还是0
            if k <= count
                if DCTcheck(irow + 5, jcol + 2) < DCTcheck(irow + 4,jcol + 3)
                    ext_msg(k,1)=1;
                end
                if DCTcheck(irow + 5, jcol + 2) > DCTcheck(irow + 4,jcol + 3)
                    ext_msg(k,1)=0;
                end
                k = k + 1;
            end
        end
    end
    
    
    展开全文
  • 信息隐藏技术原理

    2012-03-30 11:35:14
    信息隐藏技术利用人的视听觉局限性,以数字多媒体数据为载体,将秘密消息以一定的编码或加密...本文主要介绍信息隐藏技术原理和基础知识,着重讲述设计信息隐藏算法时需重点考虑的技术因素,及图像和语音信号基础知识。
  • 基于信息隐藏的口令认证技术原理与实现,加密学
  • 信息隐藏复习参考题

    2014-04-30 10:00:18
    信息隐藏复习参考题,内容为 数字隐写 与 数字水印 两个部分, 配套教材为王朔中的《数字密写和密写分析》& 葛秀慧的《信息隐藏原理及应用》
  • 基于MPEG_4编码原理信息隐藏算法设计基于MPEG_4编码原理信息隐藏算法设计基于MPEG_4编码原理信息隐藏算法设计基于MPEG_4编码原理信息隐藏算法设计基于MPEG_4编码原理信息隐藏算法设计
  • 信息隐藏原理 数字水印 钮心忻 pdf 信息隐藏于数字水印
  • 灰鸽子隐藏原理

    2008-06-04 08:54:00
    鸽子的隐藏原理:Inline Hook1.写远进程,修改以下8个API的入口代码,成 0xE9 XXXX,使调用这些API的进程跳入它的陷阱,对所获取的信息进行过滤:文件隐藏使用的是hook,FindNextFileA和FindNextFileW。进程隐藏是...

    鸽子的隐藏原理:

    Inline Hook1.写远进程,修改以下8个API的入口代码,成 0xE9 XXXX,使调用这些API的进程跳入它的陷阱,对所获取的信息进行过滤:文件隐藏使用的是hook,FindNextFileA和FindNextFileW。进程隐藏是hook ZwQuerySystemInformation。服务隐藏是hook,EnumServicesStatusA和EnumServicesStatusW注册表隐藏是hook RegEnumKeyExW和RegEnumKeyExA还hook了这个API,ZwTerminateProcess

    展开全文
  • 作为信息隐藏方面的研究者,预测误差扩展法是必须要掌握的一门技术。今天本人就详细介绍一下预测误差扩展直方图的信息隐藏技术。 1.原理简介 以灰度图像为例,在计算机里存储的数据是一个个0-255的数字。并且图像里...
  • 信息隐藏和局部化

    千次阅读 2017-03-06 16:15:31
    信息隐藏原理:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。 局部化是指把一些关系密切的软件元素物理地放得彼此靠近。 如果在测试期间和以后的...
  • 隐藏SSID和STA搜索隐藏SSID原理

    千次阅读 2017-11-14 15:11:18
    1、AP隐藏时MAC帧的表现扫描隐藏SSID,和非隐藏SSID,STA端只有在wpa_supplicant.conf有一点不同:network={ ssid="Xiaomi_B908
  • 网络与信息安全专题研究 题 目 信息隐藏与数字水印原理与matab实现 姓 名 XXX 院 系 信息与技术学院 年级专业 X级计本班 指导教师 XXX 205年6...PGF _Toc3912724 \h 1 HYERIK \ _oc3916267" 第二章 信息隐藏原理 GEREF
  • 实验十 LSB 信息隐藏的卡方分析 一实验目的 了解什么是隐写分析隐写分析与信息隐藏和数字水印的关系掌握基于图 像的 LSB隐写的分析方法设计并实现一种基于图像的 LSB卡方隐写分析方法 二实验环境 1 Windows XP 操作...
  • 走进信息隐藏的世界,全面讲解信息隐藏——第1节:信息隐藏技术简介 专栏题记:奥斯卡优秀电影《美丽心灵》里面有讲述一位优秀数学家为政府破译敌国通讯的情节,如电影所讲,现实中也有着类似的情节,在我们的生活...
  • 0宽字符隐藏文本加密及原理

    千次阅读 2019-10-22 15:08:26
    零宽字符 0宽字符加密 隐藏文本 原理
  • LSB图像信息隐藏

    万次阅读 2014-02-06 22:15:55
    替换技术就是利用人的感观系统对特定的随机noise不敏感原理,通过使用秘密信息比特替换随机noise,从而实现信息隐藏。图像高位平面对图像感官质量起主要作用,去除图像最低几个位平面并不会造成画面质量的明显下降。...
  • 信息隐藏——二值图像的信息隐藏

    千次阅读 2020-06-24 21:28:42
    二值图像的信息隐藏 【实验目的】: 使用一个特定图像区域中黑像素的个数来编码秘密信息。 若某块P1 (Bi)>50%,则嵌入一个1,若P0 (Bi)>50%,则嵌入一个0。 在嵌入过程中,为达到希望的像素关系,需要对一些...
  • 根据中文文本信息隐藏的线索,将已有的算法分为3类:基于文本图像的算法、基于文本格式的算法和基于文本内容的算法,分别阐述了每类算法的实现过程,分析其优势与不足,并且对比分析了它们的原理、嵌入容量和抵抗...
  • 主要就是实现了数字水印的嵌入提取和在不同攻击如旋转剪切噪声等下的提取效果差异的比对1 DCT变换的原理2 DCT变换的特点 在基于DCT的变换编码中,图像是先经分块(8×8或16×16)后再经DCT,这种变换是局部的,只...
  • 信息隐藏综述

    千次阅读 2020-04-22 15:49:13
    信息隐藏是把一个有意义的信息隐藏在另一个称为公开载体(Cover) 的信息中得到隐蔽载体 S(Stego Cover),非法者不知道这个普通信息中是否隐藏了其他的信息,而且即使知道也难以提取或去除隐藏的信息。所用的载体可以...
  • 实验十 LSB 信息隐藏的卡方分析 一实验目的 了解什么是隐写分析隐写分析与信息隐藏和数字水印的关系掌握基于图 像的 LSB 隐写的分析方法设计并实现一种基于图像的LSB 卡方隐写分析方法 二实验环境 1 Windows XP 操作...
  • 本文详细介绍了彩色静止数字图像的信息隐藏技术研究原理及方法。
  • 本文详细介绍了矩阵变换及其在图像信息隐藏中的应用原理
  • 空域信息隐藏算法(完成基于LSB的图像信息隐藏

    千次阅读 热门讨论 2019-04-07 19:57:49
    最近在上信息隐藏,做一个记录 一,实验要求 (1)了解信息隐藏算法的分类方式和分类依据 (2)理解空域信息隐藏算法的基本思想 (3)掌握最低有效位算法原理 (4)完成基于LSB的图像信息隐藏 二、实验内容 载体图像...
  • 封装和信息隐藏

    千次阅读 2018-11-08 19:45:24
    文章目录3.1 信息隐藏原则3.1.1 封装与信息隐藏3.1.2 接口扮演的角色3.2 创建对象的基本模式3.2.1 门户大开型对象3.2.2 用命名规范区别私用成员3.2.3 作用域、嵌套函数和闭包3.2.4 用闭包实现私用成员3.3 更多高级...
  • 回声信息隐藏是通过在语音媒体中加入不同延时的回声来实现信息隐藏的一种技术。采用易于检测的前 向一后向回声核构建了回声信息隐藏系统。介绍了前向一后向回声核的构成原理和倒谱检测方法,仿真并分析了 系统关键...
  • 信息隐藏与数字水印实验教程

    热门讨论 2012-07-02 09:06:13
    信息隐藏与数字水印是信息安全领域的研究热点。本书代码主要内容包括图像、音频、文本、网络协议和软件等各种载体的信息隐藏与数字水印实验,常见的隐写算法分析和攻击,比较典型的隐写工具的原理和使用方法。
  • 信息隐藏技术及其算法信息隐藏技术及其算法

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 153,268
精华内容 61,307
关键字:

信息隐藏的原理