微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > DSP学习交流 > 项目篇:第一篇_LSB数据存储

项目篇:第一篇_LSB数据存储

时间:10-02 整理:3721RD 点击:
注:本帖不对CCS软件安装、DSP工程建立及相关配置介绍。
传统的密码技术,重点将机密信息进行特殊编码,以达到不可识别的密文来传递,但是外表过于泄露,一看到密文,便有破解的欲望;而信息隐藏这种技术,借助于特殊的载体,以达到神不知鬼不觉的信息传递,像变色龙变成周边环境颜色以保护自己。
信息隐藏,顾名思义,把一个重要信息隐藏在另一个载体从而得到隐秘载体,有如信号调制原理,但还是有区别。之所以信息被隐藏,因为有不少载体具有很大的冗余空间,人对于图片、音频、视频的分辨也是有限的,人眼对灰度只能分辨几十级,
今天就说说一种简单的嵌入方法,LSB替换,先用Matlab把try.elecfans.com转成0,1交替的数字数组,我转成的结果如下:

  1. const int text[] = {
  2. 1,1,1,0,1,0,0,
  3. 1,1,1,0,0,1,0,
  4. 1,1,1,1,0,0,1,
  5. 0,1,0,1,1,1,0,
  6. 1,1,0,0,1,0,1,
  7. 1,1,0,1,1,0,0,
  8. 1,1,0,0,1,0,1,
  9. 1,1,0,0,0,1,1,
  10. 1,1,0,0,1,1,0,
  11. 1,1,0,0,0,0,1,
  12. 1,1,0,1,1,1,0,
  13. 1,1,1,0,0,1,1,
  14. 0,1,0,1,1,1,0,
  15. 1,1,0,0,0,1,1,
  16. 1,1,0,1,1,1,1,
  17. 1,1,0,1,1,0,1,
  18. };

复制代码

接下来比较低位,具体思路判断清除像素的最低位,再加上信息的数据,这样就很好的嵌入了:

  1. int t = 0;
  2.         int p = 112;
  3.         for(i = 0; i imgBuf + i * lineByte + j));
  4.                     int maxlen = i*newBmpWidth +j;
  5.                         if(p>= maxlen )
  6.                         {
  7.                                 *(unsigned char *)(newBmpBuf + i*newLineByte + j) = temp - temp %2 +text[t];
  8.                                 t ++;
  9.                         }
  10.                         else
  11.                         {
  12.                                 *(unsigned char *)(newBmpBuf + i*newLineByte + j) = temp;
  13.                         }
  14.                 }
  15.         }

复制代码

由于读取bmp数据由于通信速度问题,那就直接simulator了,下述即结果图:


可见左右两图并没啥区别,很好的隐藏了数据。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top