注:本帖不对CCS软件安装、DSP工程建立及相关配置介绍。
传统的密码技术,重点将机密信息进行特殊编码,以达到不可识别的密文来传递,但是外表过于泄露,一看到密文,便有破解的欲望;而信息隐藏这种技术,借助于特殊的载体,以达到神不知鬼不觉的信息传递,像变色龙变成周边环境颜色以保护自己。
信息隐藏,顾名思义,把一个重要信息隐藏在另一个载体从而得到隐秘载体,有如信号调制原理,但还是有区别。之所以信息被隐藏,因为有不少载体具有很大的冗余空间,人对于图片、音频、视频的分辨也是有限的,人眼对灰度只能分辨几十级,
今天就说说一种简单的嵌入方法,LSB替换,先用matlab把try.elecfans.com转成0,1交替的数字数组,我转成的结果如下:
- const int text[] = {
- 1,1,1,0,1,0,0,
- 1,1,1,0,0,1,0,
- 1,1,1,1,0,0,1,
- 0,1,0,1,1,1,0,
- 1,1,0,0,1,0,1,
- 1,1,0,1,1,0,0,
- 1,1,0,0,1,0,1,
- 1,1,0,0,0,1,1,
- 1,1,0,0,1,1,0,
- 1,1,0,0,0,0,1,
- 1,1,0,1,1,1,0,
- 1,1,1,0,0,1,1,
- 0,1,0,1,1,1,0,
- 1,1,0,0,0,1,1,
- 1,1,0,1,1,1,1,
- 1,1,0,1,1,0,1,
- };
复制代码
接下来比较低位,具体思路判断清除像素的最低位,再加上信息的数据,这样就很好的嵌入了:
- int t = 0;
- int p = 112;
- for(i = 0; i < newBmpHeight; i++)
- {
- for(j = 0; j < newBmpWidth; j++)
- {
- temp = (*(unsigned char *)(m->imgBuf + i * lineByte + j));
- int maxlen = i*newBmpWidth +j;
- if(p>= maxlen )
- {
- *(unsigned char *)(newBmpBuf + i*newLineByte + j) = temp - temp %2 +text[t];
- t ++;
- }
- else
- {
- *(unsigned char *)(newBmpBuf + i*newLineByte + j) = temp;
- }
- }
- }
复制代码
由于读取bmp数据由于通信速度问题,那就直接simulator了,下述即结果图:
|