跳转到内容
主菜单
主菜单
移至侧栏
隐藏
规范/协议
协议
算法
JVM
多线程/并发
存储
AI
深度学习
工具箱
最近更改
文章分类
全部文章
WHY42
搜索
搜索
外观
登录
个人工具
登录
欢迎来到Riguz的小站!这是一个私人wiki,用来记录一些我的笔记。
查看“︁LSB算法”︁的源代码
页面
讨论
大陆简体
阅读
查看源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
查看源代码
查看历史
常规
链入页面
相关更改
页面信息
外观
移至侧栏
隐藏
←
LSB算法
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
=隐写术= 隐写术是指将数据隐藏到载体文件中的方法,载体文件(cover file)相对隐秘文件的大小(指数据含量,以比特计)越大,隐藏后者就越加容易。 因为这个原因,数字图像(包含有大量的数据)在因特网和其他传媒上被广泛用于隐藏消息。这种方法使用的广泛程度无从查考。例如:一个24位的位图中的每个像素的三个颜色分量(红,绿和蓝)各使用8个比特来表示。如果我们只考虑蓝色的话,就是说有28种不同的数值来表示深浅不同的蓝色。而像11111111和11111110这两个值所表示的蓝色,人眼几乎无法区分。因此,这个最低有效位就可以用来存储颜色之外的信息,而且在某种程度上几乎是检测不到的。如果对红色和绿色进行同样的操作,就可以在差不多三个像素中存储一个字节的信息。 =LSB(LeastSignificantBits)算法= LSB即最低有效位算法。假设数据文件有8个字节,我们利用每一个字节的最小位,来存储一个隐藏字节的1bit,这样每8个byte的数据文件就可以隐藏1byte的隐藏数据。例如,假设数据文件的8个字符为: <source lang="lisp"> 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff </source> 我们要隐藏一个'h'字符,假设使用ASCII码,'h'=104=0x68=1101000(2)。我们采取算法: <source lang="cpp"> char arr[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; char s = 'h'; for (int j = 0; j < 8; j++) { char t = arr[j]; t &= 0xFE; //FE, to make sure LSB is always zero t|= (char)((h >> j) & 1); arr[j] = t; } </source> 则完成后,数据为: <pre> 1 2 3 4 5 6 7 8 0 1 1 0 1 0 0 0 fe fe fe ff fe ff ff fe </pre> 解密时: <source lang="cpp"> char ch = 0; char byte[] = {fe, fe, fe, ff, fe, ff, ff, fe }; for (int b = 7; b >= 0; b--) { ch += (byte[b] & 1); if (b != 0) ch <<= 1; } </source> [[Category:Programe]]
返回
LSB算法
。
搜索
搜索
查看“︁LSB算法”︁的源代码
添加话题