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

介绍拙作 jpgcrypt: 一个将图片加密成马赛克的工具(欢迎测试反馈)

  •  
  •   scmagi ·
    scmagi · 2020-04-11 06:44:48 +08:00 · 4509 次点击
    这是一个创建于 1672 天前的主题,其中的信息可能已经有所发展或是发生改变。

    先放网址和效果图: https://jpgcrypt.github.io/ (使用前的注意事项: 请阅读网页里面的说明。)

    效果图中,最上一幅为原图。中间左侧和右侧分别是使用彩色和黑白模式加密后的结果(缩小 50%)。最下面一幅是黑白的加密结果应用 JPEG 压缩后(质量 10%)再解密出来的样子。

    imgur


    为什么要这么做,这算什么加密?

    当代的密码算法,可以在数据的层次上实现非常好的保密。但是,这样的各类算法都是针对数字化的「数据」设计的。无论文件本身是图像还是文本,加密之后都成为了看似随机的数据,既不是图像也不是文本了。

    有的时候可能需要利用原有的途径传送加密后的结果。如果可以让图像加密之后还是图像,就可以利用各种发送图像的手段(网站、软件、服务……)直接传送,达到保密的目的,也无需另起炉灶。

    jpgcrypt 这个工具,把图片打散成 8x8 尺寸的马赛克,然后借助密码算法生成的伪随机序列( SHA-512 和 Salsa20 的函数)将所有的马赛克乱序重排,并施以伪随机的变换(旋转 90 度、水平和垂直镜像)。要将马赛克恢复原样,需要重新构建这一序列,即得知一开始加密时使用的密码。虽然不借助这一办法也有恢复(破解)的可能,但这一过程相信也是比较费时的。

    因为加密(打散)和解密(恢复)的过程几乎只和图片的尺寸以及用户提供的口令有关,所以这个算法不依赖于图像本身的质量(不太严格,下面会讲),只要图片尺寸正确,口令正确,就可以恢复出内容上大致正确的原图。在传输过程中图片经历压缩、降低质量,也会影响解密图片的质量,但还是可以恢复出来的。

    本加密工具的特点

    1. 是一个运行在浏览器上的工具,加解密不依赖服务器后台。未来将推出浏览器插件,更方便使用。
    2. 同一个密码加密同一个图片,结果不相同。*
    3. 加密结果,即使经历轻度的尺寸缩放和图片压缩,仍然可以解密。

    *: 为了达到这个目的,加密图片时进行了两次混淆。第一次混淆使用用户口令+随机参数,后者在第二次混淆前记录在图片上。如果图片失真过于严重,还是有机会解密失败。

    欢迎测试这个工具,告诉我各种不足之处 :)

    11 条回复    2020-04-12 14:54:01 +08:00
    designer
        1
    designer  
       2020-04-11 07:06:16 +08:00 via iPhone
    挺棒的,联想到之前的表情加密信息 app 、最近的动森。感觉以后会被和谐,这不符合社会主义价值观
    designer
        2
    designer  
       2020-04-11 07:09:49 +08:00 via iPhone
    要是像二维码一样扫一扫就能恢复原图就好了。
    discrete
        3
    discrete  
       2020-04-11 08:55:06 +08:00
    巧了,前几天还在回顾《时间机器》。
    gzlock
        4
    gzlock  
       2020-04-11 08:55:09 +08:00 via Android
    @designer 将图片 base64 后的字符串转换为二维码,扫码还原的话可能需要做一个 app 来实现
    gzlock
        5
    gzlock  
       2020-04-11 09:07:54 +08:00 via Android   ❤️ 1
    如果加密后的图片可以显示成其他照片(例如有些二维码生成后看起来像图片)就更好了
    locoz
        6
    locoz  
       2020-04-11 09:24:20 +08:00 via Android   ❤️ 1
    有趣。如果还能做到楼上所说的效果就太牛逼了😂
    WittBulter
        7
    WittBulter  
       2020-04-11 10:43:56 +08:00
    感觉不错。
    如果是开源的,有一些性能基线测试我想应该有不少人愿意用。
    John60676
        8
    John60676  
       2020-04-11 15:57:41 +08:00
    拼图
    dyxang
        9
    dyxang  
       2020-04-11 21:31:37 +08:00 via Android
    让我想到了 q 群里的酷安 app 图片混淆,前段时间很火(主要是一段转发的聊天记录),用来开车了…
    wsph123
        10
    wsph123  
       2020-04-12 08:09:02 +08:00 via iPhone
    好东西🧚‍♀️
    yuankui
        11
    yuankui  
       2020-04-12 14:54:01 +08:00
    防盗链?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   945 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:59 · PVG 05:59 · LAX 13:59 · JFK 16:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.