鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > 网站安全 > 加密解密 > >

数字图像处理(二) 基于LSB的图像加密

来源:互联网 作者:佚名 时间:2015-09-08 10:43
环境 : matlab LSB, Least Significant Bits ,最低有效位,将图像加密处理。 这次将通过位平面的切割之后,嵌入一张隐私图片,一些人的隐私交流很有可能通过这个,比如美国的某某人,当然这个只是最简单的。 经过试验也证明自己的想法是正确的,首先bitget

     环境matlab


    LSB,Least Significant Bits,最低有效位,将图像加密处理。


    这次将通过位平面的切割之后,嵌入一张隐私图片,一些人的隐私交流很有可能通过这个,比如美国的某某人,当然这个只是最简单的。

     



      经过试验也证明自己的想法是正确的,首先bitget(X,Y)是拿到X二进制的值的Y位。

>> bitget(1,1)

ans =

     1

>> bitget(1,2)

ans =

     0

>> 

那么我们可以想想,一幅8位的数字图像(无符号类型),最高是11111111(二进制),即2^8 - 1,255,用大腿一想,当然是第八位起决定性作用,假如有一百万零一这个数字,少了最前面的一个一和最后面的一个一可是两码事。


举个例子 ,我切除图像的一部分:

>> q = f(122:130,122:130);
>> imwrite(q,'verysmall.jpg');
>> f = imread('verysmall.jpg')

f =

  155  154  149  141  134  129  129  130  127
  171  169  166  161  157  154  154  154  148
  173  171  170  170  171  171  169  168  163
  165  164  164  167  170  172  171  169  165
  166  166  167  169  171  172  172  171  168
  174  175  175  174  170  169  169  170  175
  179  182  181  174  164  159  160  164  172
  184  186  185  174  160  152  155  160  161
  182  185  180  167  154  149  148  148  149
每个像素点的值这么大。

接下来:

>> t = bitget(f,8)

t =

    1    1    1    1    1    1    1    1    0
    1    1    1    1    1    1    1    1    1
    1    1    1    1    1    1    1    1    1
    1    1    1    1    1    1    1    1    1
    1    1    1    1    1    1    1    1    1
    1    1    1    1    1    1    1    1    1
    1    1    1    1    1    1    1    1    1
    1    1    1    1    1    1    1    1    1
    1    1    1    1    1    1    1    1    1

>> 
最高位是决定性作用的一层。所以,要嵌入图像,就要嵌入到第一层,影响最小。


>> f = imread('lina.jpg');
>> g = bitget(f,8);

这样g虽然是第八层的图像,但是都是二进制最高位的值,非0即1,而在为灰度图像看来,都是黑色。需要转换成二值图像。

t = logical(g);

接下来,我把自己的话嵌入到照片中。

>> b = imread('love.jpg');
>> c = im2bw(b);

这次是反过来,我们是要把一幅8位数据类型的图像嵌入到位图中,那首先要把8位的数据转换成二进制,用上面的im2bw。


先看看嵌入到影响最大的一层的效果如何:


>> w = bitset(a,8,c);
>> imshow(w)



接下来,嵌入到第一层:


>> w = bitset(a,1,c);
>> imshow(w)

几乎是看不到什么的,当你想看看你嵌入什么图像时,只需要把被替换的第一层取出。


>> y = bitget(w,1);
>> imshow(logical(y))


     把你的告白或者秘密用这个神奇的东西告诉你的XX吧。

















网友评论
<