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

2020-04-11 06:44:48 +08:00
 scmagi

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

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


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

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

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

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

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

本加密工具的特点

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

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

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

4509 次点击
所在节点    分享创造
11 条回复
designer
2020-04-11 07:06:16 +08:00
挺棒的,联想到之前的表情加密信息 app 、最近的动森。感觉以后会被和谐,这不符合社会主义价值观
designer
2020-04-11 07:09:49 +08:00
要是像二维码一样扫一扫就能恢复原图就好了。
discrete
2020-04-11 08:55:06 +08:00
巧了,前几天还在回顾《时间机器》。
gzlock
2020-04-11 08:55:09 +08:00
@designer 将图片 base64 后的字符串转换为二维码,扫码还原的话可能需要做一个 app 来实现
gzlock
2020-04-11 09:07:54 +08:00
如果加密后的图片可以显示成其他照片(例如有些二维码生成后看起来像图片)就更好了
locoz
2020-04-11 09:24:20 +08:00
有趣。如果还能做到楼上所说的效果就太牛逼了😂
WittBulter
2020-04-11 10:43:56 +08:00
感觉不错。
如果是开源的,有一些性能基线测试我想应该有不少人愿意用。
John60676
2020-04-11 15:57:41 +08:00
拼图
dyxang
2020-04-11 21:31:37 +08:00
让我想到了 q 群里的酷安 app 图片混淆,前段时间很火(主要是一段转发的聊天记录),用来开车了…
wsph123
2020-04-12 08:09:02 +08:00
好东西🧚‍♀️
yuankui
2020-04-12 14:54:01 +08:00
防盗链?

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

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

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

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

© 2021 V2EX