V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
zzy8200
V2EX  ›  分享创造

图片加密隐写 JS 库

  •  
  •   zzy8200 ·
    zeruniverse · 2016-05-13 17:23:20 +08:00 via iPhone · 8271 次点击
    这是一个创建于 3101 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    特点:

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

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

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

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


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

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

    我觉得是可以的,以前念书的时候做过数字水印的东西。当然也有可能是我们做得太渣了。
    SCaffrey
        19
    SCaffrey  
       2016-05-15 19:35:13 +08:00
    如何实现每个人看到的图片有唯一指纹……
    zzy8200
        20
    zzy8200  
    OP
       2016-05-16 01:50:29 +08:00 via iPhone
    @billlee 加个滤镜水印估计就没了
    fwy1998
        21
    fwy1998  
       2016-10-13 13:12:38 +08:00
    话说...你这个基本不抗截屏..而且也无法自动数据定位...手机拍屏幕直接全跪...
    fwy1998
        22
    fwy1998  
       2016-10-13 13:13:51 +08:00
    阿里内网有这个功能,手机拍屏幕都能读出来...还有很大的进步空间
    zzy8200
        23
    zzy8200  
    OP
       2016-11-02 04:57:09 +08:00   ❤️ 1
    @fwy1998 阿里内部那个叫数字水印。最后是人眼读的。手机拍屏电脑肯定是读不出来的。。。而且你看阿里那个字那么大,也就只能打个员工号了,存不了多少信息。
    fhefh
        24
    fhefh  
       2017-08-29 16:35:08 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   989 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 22:09 · PVG 06:09 · LAX 14:09 · JFK 17:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.