基本上 5 个最高面含有视觉可见的有意义的信息,在其余的位面中几乎没有任何视觉信
”
息,这些位面所显示的只是图像中很细小的局部,在很多情况下,它们可看作噪声 正因
为图像具有位面这种性质,因此信息往往隐藏在不为人视觉所察觉的位置,这样位面就
为信息隐藏提供了一种很好的实施方案。将信息隐藏在这些看似噪声的位置,其对图像的
破坏就不会太大,当然,在嵌入信息之前,首先要选择好信息具体加入的位面位置,不
能将信息加入在存在图像视觉信息的位面上,因此,一般的 LSB 算法中,信息一般加在
图像的后 4 位。
(1)嵌入秘密信息的具体步骤:
第一步:读入载体文件,并显示它;
第二步:决定载体的 LSB 及嵌入的位数,本文采用嵌入图像中所有象素的最后一位,
即第 8 位;
第三步:对载体图像做预处理,置其 LSB 为 0;
第四步:将秘密信息以 ACILL 码的形式读入,并存储;
第五步:在每一个象素的第 LSB 位上,存储秘密信息的一个 bit;
第六步:显示嵌入秘密文件的图像;
(2)读取秘密信息的具体步骤:
第一步:读入含有秘密文件的图像;
第二步:得到每一个象素点的 LSB 位;
第三步:由每 8 个 LSB 位组成一个 ASILL 还原秘密信息。
实现起来其实很简单,无论使用哪种理论模型,大体都是利用数据偏移罢了,偶用
的内部嵌入法,大家可以根据自己的需要变更偶的代码,也欢迎大家创造的隐藏方法,
那位大侠有时间更改的话给偶也寄一份,我的 Email:ceponline@yahoo.com.cn。
本类从功能上讲,可以把任意文件(不能超过 bmp 文件大小)隐藏到 BMP 图片中,
图片大小基本不变,浏览图片也看不出变化。当然,也可以把隐藏在图片中的文件提取出
来。
代码如下,由 3 个类构成:
BitmapInput.java
package org.loon.framework.test.encode;
import java.awt.image.BufferedImage;
/** *//**
* * Title: LoonFramework
* Description:
*
* Copyright: Copyright (c) 2007
*
* Company: LoonFramework
*
* @author chenpeng
* @email:ceponline@yahoo.com.cn
* @version 0.1
*/
public class BitmapInput {