危险像素
127 / 128 / 129(即 xv = −1, 0, +1)减幅会撞零,标记为湿点。
实验 1 · 一分钟上手
拖动位平面滑条观察图像被拆成 8 层;输入消息后,我们只修改最低位并统计被改变的像素。
自测 · 看懂指纹
点击「嵌入到 LSB」后,这里会用项目同一套统计量对当前图像做卡方检验与 RS 分析,看它是否留下"被嵌过"的指纹。
进阶 · 位平面分层
点击下方位平面小块:单层模式下可抽出任意一位平面单独观察;叠加模式下可开关若干层,看加权和如何逐层逼近原图。
试试:叠加模式下先关掉 bit 0、1、2,画面变“平”;把 8 层全开则精确还原原图。
实验 2 · 项目的核心
点击格子手动翻转 LSB,或让系统自动找出“该翻转哪一个位置”,实时验证 H·x == m。
更深入一步
像素减 128 后,|xv|≤1 的像素像“被水浸湿的纸”。nsF5 不碰它们,只在干点上解 GF(2) 方程——无收缩、无重试。
提示:点击格子可在“湿/干”之间切换,观察干点不足时会发生什么。
127 / 128 / 129(即 xv = −1, 0, +1)减幅会撞零,标记为湿点。
只在干列上求伴随式方程 H·y = d,优先单列、双列,再高斯消元兜底。
每个块都能一次成功,容量与嵌入效率逼近汉明码理论上限。
实验 4 · 项目真正的算法
同一句话、同一张图:分别用“朴素 LSB 替换”与项目真实的 nsF5 算法(对应 ns5_core.py 的 nsF5Pixel._embed)嵌入,对比改动数量、分布与统计指纹。
读数 · 谁的指纹更弱
嵌入后读两行数:上面是改动统计(含 PSNR),下面是检测器的判定。两种方法各嵌一次,对比指纹强弱——这就是矩阵编码的意义。
实验 5 · JPEG 压缩域
前面的实验都发生在像素上,而教科书里的 nsF5 发生在 JPEG 的量化 DCT 系数上。这里把一个 8×8 块的量化系数摊开给你看:载体是谁、湿点是谁、"+3→+2" 长什么样。
一张图看懂
消息 → 长度头 + SHA-256 键控 → 汉明/湿纸编码 → 写入 LSB → 含密图。
重算内容哈希 → 恢复路径 → 提取伴随式 → 还原消息;被篡改会自同步失败。
卡方 / RS / 11-143 维特征 + 双版本 LGB 模型输出含密概率。
机器学习检测
先手工设计能度量 LSB 足迹的特征,再用分类器学一个判别边界;项目同时保留“稳健 143 维”与“可解释 53 维”两套模型。
红线向右 = 更严格(误报少、漏报多);向左 = 更宽松(检出高、误报多)。
用项目真实统计量观察“藏得越多越容易被发现”:拖动滑块看三条曲线同步移动。
弱 LSB 信号 + 独立样本只有照片数;特征法在同样小数据上更稳、更可解释。
同一张照片的所有变体只能同进同出,防止“同源泄漏”让 AUC 虚高。
143d 判得更准(AUC 0.90 vs 0.85),代价是 SRM 90 维难以解释;53d 去掉 SRM 后每个特征都能解释,AUC 略低。
6–12 个月学习路线
下面是 12 周快速入门计划;完整课程为 6–12 个月(基础 / 提高 / 深化 / 实战四段),见手册附录 F。
继续深入
66 页完整学习路径,可逐章阅读。
A 6–12 month bilingual learning path (12-week quick-start).
Notebooks、Docker、数据集与全部源码。
这个领域并不缺研究工具——Aletheia(Python 隐写分析工具箱)、CONSEAL(C++ 特征库)、DDE Lab 工具集等。本项目不替代它们:定位是交互教学、可视化与可复现实验(每步可导出档案、一键重跑)。完整对比见仓库 README 的「同类工具与本项目定位」。
快速答疑
实验与原理中最高频的疑问,点开逐条查看。
先看手册第 3、8 章:LSB 卡方/RS 分析与第 8 章特征工程。
仓库附 10 个章节 Notebook(对应第 1–10 章),含汉明矩阵、湿纸求解与 ML 特征/推理全流程。
项目采用 Apache-2.0 许可,可自由用于教学、研究与商用,只需保留版权与许可声明(见 LICENSE / NOTICE)。
学完自查
每题选出你认为正确的选项,点“检查答案”看对错与解析;全部答完可累计得分。