图片加密隐写 JS 库

2016-05-13 17:23:20 +08:00
 zzy8200

下午工作不饱和(明明很饱和……)写的。功能就是把一段文字信息写进图片里。使用 canvas 实现所以只能在支持 html5 的浏览器上用。库不依赖任何其他 JS 库。

特点:

  1. 只改变 RGB 通道的最低位,因此隐写后的图片跟原图几乎无视差。
  2. 对所有最低位进行随机化初始,达到混淆目的。
  3. 信息非线性储存,按位调用 hash 函数决定储存位置。(密码决定 hash 函数)

DEMO : http://zeruniverse.github.io/CryptoStego
Source: https://github.com/zeruniverse/CryptoStego

8394 次点击
所在节点    分享创造
24 条回复
imn1
2016-05-13 17:33:01 +08:00
直接感谢
dapang1221
2016-05-13 17:33:19 +08:00
已 Star ,老司机的发车神器
zzy8200
2016-05-13 17:34:47 +08:00
@dapang1221 哎呀 你们不要说出来啊 闷声发大财……
kokdemo
2016-05-13 17:40:27 +08:00
老司机是厉害,就是这个界面磕碜了点……
50vip
2016-05-13 17:41:48 +08:00
zzy8200
2016-05-13 17:41:53 +08:00
@kokdemo 我就是来展示下我的库么……而且匆匆忙忙写的,甚至还没 debug 过 gg ……
rubyvector
2016-05-13 17:51:18 +08:00
致敬原创党.已收藏,感谢哟
zzy8200
2016-05-13 18:12:40 +08:00
@50vip 嘛 原来已经有 php 版了……
ghostheaven
2016-05-13 19:03:06 +08:00
大学上过一门课,就是信息隐藏( information hiding ),原理差不多,不过是修改离散变换后数据,然后再逆变换回来。另外需要做一些容错,并添加高斯噪音。加密解密需要一个 key , key 不正确的时候,由于噪音的存在和这种加密的方法,根本无法判断图片中是否存有信息,防止嗅探。
优点是图片经过简单画质压缩或少量缩放后信息仍可读,没有 key 就无法判断信息的存在,不会被嗅探到图片被加密。
缺点是图片经过裁剪,过度压缩或缩放,就无法读取了。
方法同样适用于音频文件。
50vip
2016-05-13 19:06:34 +08:00
@zzy8200 javascript 的,代码没有混淆,在调试工具中可以看到~~~
billlee
2016-05-13 19:49:03 +08:00
看了楼主的描述,感觉 JPEG 编码过后什么都没了。试了一下,果然如此。
应该在频域上做的。
imn1
2016-05-13 20:25:42 +08:00
steganography 好像是基于一个著名的“老旧”开源库 steghide(@sf.net)
能隐藏的不仅文本,还有音频
linux , windows 都有
imn1
2016-05-13 20:28:59 +08:00
切,居然加了 link ,是位于 sf.net 上的 steghide
不少同类 android app 都用了这个库
zzy8200
2016-05-14 00:12:04 +08:00
@billlee JPEG 这种有损压缩在频域上做也会 gg 吧。你根本不知道会压缩到什么程度。

@ghostheaven 目前就是没有 key 或 key 错误无法知道有没有信息。可能会解密出错误信息
zzy8200
2016-05-14 06:29:50 +08:00
@billlee 已利用快速傅立叶实现抗压缩隐写
est
2016-05-14 10:43:05 +08:00
外行,不懂。假如用图片隐写术来做一个类似 youtube Content ID 的东西,也就是每个人看到的图片有唯一指纹。用来跟踪图片分发情况。


那么有没有技术能够抵抗 n 个人把图片合并起来算 RPG 平均值的办法?
zzy8200
2016-05-14 11:32:32 +08:00
@est 不是很懂你在说什么抱歉……

算平均值有什么用?
billlee
2016-05-14 23:20:51 +08:00
@zzy8200 他说的是数字水印吧。有一个图片的嵌入了不同数字水印的 n 个副本,能否获得一个不含数字水印的副本。

我觉得是可以的,以前念书的时候做过数字水印的东西。当然也有可能是我们做得太渣了。
SCaffrey
2016-05-15 19:35:13 +08:00
如何实现每个人看到的图片有唯一指纹……
zzy8200
2016-05-16 01:50:29 +08:00
@billlee 加个滤镜水印估计就没了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/278480

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX