# information_hiding_test **Repository Path**: lucian999/main ## Basic Information - **Project Name**: information_hiding_test - **Description**: 信息隐藏实验,本项目基于https://gitee.com/A1LinLin1/stegano信息隐藏与数字水印实验仓库在源代码上进行修改,第22组 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2025-11-27 - **Last Updated**: 2025-12-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 信息隐藏实验,本项目基于https://gitee.com/A1LinLin1/stegano信息隐藏与数字水印实验仓库在源代码上进行修改,具体改进 采用矩阵编码算法进行信息嵌入,算法原理: ![算法原理公式说明](https://foruda.gitee.com/images/1764212596328442779/e16e98db_15893314.png "屏幕截图") 我们用一种叫“矩阵编码”的方法来把信息藏进图片里。它的核心思想是:用三个像素点的最低位(也就是最右边那一位)来藏两个比特的信息,而且尽量少地改变像素值。 📌 一、怎么藏信息? 选三个相邻的像素点,分别记作 A、B、C。 每个像素点都有一个数值,我们只看它最末尾的一位数字(0 或 1),这叫做“最低位”。 比如某个像素值是 153,二进制是 10011001,最后一位是 1。 另一个是 154,二进制是 10011010,最后一位是 0。 我们先算出两个“校验值”: 把 A 和 C 的最低位做一次“异或”操作(就是相同为 0,不同为 1),得到一个结果。 把 B 和 C 的最低位也做一次“异或”,得到另一个结果。 这两个结果用来和我们要藏的信息对比。 然后我们拿要藏的两个比特信息(比如 01 或 10)和上面这两个校验值比较,看看是否一致。 根据比较的结果,决定要不要改某个像素的最低位: 如果完全一样(比如都为 0),就什么都不改。 如果第一个对了但第二个错了,就翻转 B 的最低位。 如果第一个错了但第二个对了,就翻转 A 的最低位。 如果两个都不对,就翻转 C 的最低位。 👉 这样做的好处是:最多只改一个像素的最低位,对图片的影响非常小,人眼基本看不出来。 📌 二、怎么提取信息? 当你想从图片中读回隐藏的信息时,只需要: 找到原来的三个像素点 A、B、C。 分别看它们的最低位。 用下面的方法计算: 第一个信息 = A 的最低位 异或 C 的最低位 第二个信息 = B 的最低位 异或 C 的最低位 这样就能恢复出原来藏进去的两个比特信息了! ✅ 总结一下 用三个像素的最低位,藏两个比特信息。 先算出两个“校验值”,再和要藏的信息比对。 根据比对结果,最多只改一个像素的最后一位。 提取时只要重新计算两次“异或”就能还原信息。 这种方法既高效又隐蔽,非常适合用于图像隐写(信息隐藏)。