[开源]双图隐写:用两张图片共同隐藏和读取一段文字-隐性水印

零、前言

如标题所说,这是一个用两张图片共同隐藏和读取一段文字的小工具。

至于为什么要做这个,端午闲在家,可能算是一种特别的浪漫吧哈哈。

二、功能详解

它的作用很简单:

用两张图片共同隐藏一段短文字,读取时也必须两张图片同时在场,才能还原出原文。

单独拿到其中一张图,读不出完整内容。
只有两张图凑到一起,文字才会被恢复出来。

可以拿来藏一些很短的内容,比如:

  • 名字缩写
  • 纪念日
  • 暗号
  • 一句很短的话
  • 两张情侣头像之间的小彩蛋
  • 小范围纪念性质的信息标记

但请注意这是个小玩具,不是专业取证隐写,也不是严肃的加密工具。

三、能解决什么问题?

普通图片水印的问题:

  1. 显示水印太直白
  2. 单图隐写太集中

“两张图共同隐藏”的方案:

  • 图片 A 里只放一部分信息
  • 图片 B 里只放另一部分信息
  • 两部分合并后才能还原文字
  • 所有处理都在浏览器本地完成
  • 不需要后端,不上传图片

四、技术原理简述

详细展开查看

简单说,它不是把完整文字直接塞进某一张图里,而是先把短文字拆成两份。

大致流程:

短文字
  ↓
编码成 payload
  ↓
加入版本、长度、校验信息
  ↓
通过 XOR 拆成两份 share
  ↓
share A 写入图片 A
share B 写入图片 B
  ↓
读取时两份重新 XOR 合并
  ↓
还原文字

也就是说:

单张图 ≠ 原文
两张图 + 工具 = 原文

隐写部分用的是图像频域相关思路,把信息写入图片的中频系数区域,并配合纠错、重复映射、校验等机制,尽量让肉眼看不出明显变化,同时提高普通头像压缩、轻微裁剪后的读取成功率。

五、 已验证的情况

  • 640x640、JPEG 质量 90 的压缩模拟仍可读取。
  • 默认写入 crop-v2 抗裁剪布局,已验证 90%84%78% 中心裁剪、80%-84% 轻微偏移裁剪和裁剪后 JPEG 质量 90 可读取。

六、项目地址

欢迎 Issue / PR,如果你还有什么建议。

如果你觉得这个项目有点意思或是对你有帮助,欢迎 ✨Star ✨


原始论坛帖子:查看原帖


已发布

分类

来自

标签:

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注