盲浮水印工具
在任意照片裡嵌入不可見的文字或圖片。像素看起來毫無變化,同樣兩個密碼再走一遍就能取回內容。全部在瀏覽器內運行,絕不上傳。
這兩個密碼到底在做什麼?
兩個密碼都不是「幫圖片加密」——圖片一樣能打開。它們控制的是演算法內兩個獨立的洗牌步驟。少任何一個,提取端就會走錯格子或讀錯順序,只會拿到雜訊。
圖片密碼 → 決定把 bit 藏在圖片的哪些格子。
浮水印密碼 → 決定這些 bit 的寫入順序。
- 1. 切成 4×4 小塊整张图被切成 4×4 像素的小方块,每一块都是一个"候选藏点"。
- 2. DCT 後按圖片密碼換位每一块做 DCT(频域变换),然后用图片密码派生的种子对块内像素做确定性洗牌。
- 3. 按浮水印密碼把 bit 打亂後寫入你要藏的比特串,再用水印密码做一次洗牌,之后才写进 SVD 奇异值里。
- 4. 逆變換還原圖片肉眼看不出变化。要读回来,提取端必须用同样两个密码倒着走完这两次洗牌。
密碼錯 → 雜訊. 任何一個密碼差 1,提取端就會落錯格子或讀錯順序——只能拿到純雜訊,不會拿到「部分正確」的資訊。
抗攻擊邊界
盲浮水印適合做安靜的歸屬標記和內部流轉追蹤,但不是萬能 DRM。真正使用前,應該按圖片會經歷的處理方式測試一遍。
較穩最佳情況
PNG 往返、輕微亮度變化、受控縮放測試。
不穩定需要實測
JPEG 匯出、加噪、平台二次壓縮、截圖和重濾鏡。
高風險脆弱區域
大幅裁剪、旋轉、嚴重降採樣,或去掉浮水印所在區域的編輯。
下方提取模式裡可以模擬縮放、裁剪、旋轉、亮度和噪聲,建議先測試再交付圖片。
工作原理
- 1. 选一张图
任意 PNG 或 JPG。图片越大能藏的信息越长。
- 2. 输入要藏的内容
文字、URL 或一张小 logo,再设两个数字密码。
- 3. 保存结果
下载带水印的 PNG,肉眼看不出与原图有别。
- 4. 之后再提取
把这张图拖回来,输入同样两个密码,内容就出来了。
为什么用它
- 证明被盗图/被转发无署名的照片归你所有。
- 每个人给不同密码,泄漏可以追到具体渠道。
- 在产品渲染图里塞订单号、时间戳、合同编号等短字符串。
- 完全在浏览器内运行,不上传、不登录。
常见问题
什么是盲水印?
藏在图片里的信息,人眼看不到,程序可以取回,并且不需要原图。
能扛得住编辑吗?
可以。DWT-DCT-SVD 算法能扛住裁剪、缩放、旋转、亮度调节和轻噪声。
我的图片会被上传吗?
不会。全部通过 WebAssembly 在浏览器内处理。
能藏多少字?
取决于图片大小。1024×1024 大约能塞 16000 bit(≈2000 字符)。
为什么要两个密码?
一个决定藏在图片哪里,一个决定内容顺序。少一个就还原不出来。
与 Python 版 blind-watermark 兼容吗?
兼容。同一算法同一参数,一边嵌入的图可以另一边提取。