先放网址和效果图: https://jpgcrypt.github.io/ (使用前的注意事项: 请阅读网页里面的说明。)
效果图中,最上一幅为原图。中间左侧和右侧分别是使用彩色和黑白模式加密后的结果(缩小 50%)。最下面一幅是黑白的加密结果应用 JPEG 压缩后(质量 10%)再解密出来的样子。
当代的密码算法,可以在数据的层次上实现非常好的保密。但是,这样的各类算法都是针对数字化的「数据」设计的。无论文件本身是图像还是文本,加密之后都成为了看似随机的数据,既不是图像也不是文本了。
有的时候可能需要利用原有的途径传送加密后的结果。如果可以让图像加密之后还是图像,就可以利用各种发送图像的手段(网站、软件、服务……)直接传送,达到保密的目的,也无需另起炉灶。
jpgcrypt 这个工具,把图片打散成 8x8 尺寸的马赛克,然后借助密码算法生成的伪随机序列( SHA-512 和 Salsa20 的函数)将所有的马赛克乱序重排,并施以伪随机的变换(旋转 90 度、水平和垂直镜像)。要将马赛克恢复原样,需要重新构建这一序列,即得知一开始加密时使用的密码。虽然不借助这一办法也有恢复(破解)的可能,但这一过程相信也是比较费时的。
因为加密(打散)和解密(恢复)的过程几乎只和图片的尺寸以及用户提供的口令有关,所以这个算法不依赖于图像本身的质量(不太严格,下面会讲),只要图片尺寸正确,口令正确,就可以恢复出内容上大致正确的原图。在传输过程中图片经历压缩、降低质量,也会影响解密图片的质量,但还是可以恢复出来的。
*: 为了达到这个目的,加密图片时进行了两次混淆。第一次混淆使用用户口令+随机参数,后者在第二次混淆前记录在图片上。如果图片失真过于严重,还是有机会解密失败。
欢迎测试这个工具,告诉我各种不足之处 :)
1
designer 2020-04-11 07:06:16 +08:00 via iPhone
挺棒的,联想到之前的表情加密信息 app 、最近的动森。感觉以后会被和谐,这不符合社会主义价值观
|
2
designer 2020-04-11 07:09:49 +08:00 via iPhone
要是像二维码一样扫一扫就能恢复原图就好了。
|
3
discrete 2020-04-11 08:55:06 +08:00
巧了,前几天还在回顾《时间机器》。
|
4
gzlock 2020-04-11 08:55:09 +08:00 via Android
@designer 将图片 base64 后的字符串转换为二维码,扫码还原的话可能需要做一个 app 来实现
|
5
gzlock 2020-04-11 09:07:54 +08:00 via Android 1
如果加密后的图片可以显示成其他照片(例如有些二维码生成后看起来像图片)就更好了
|
6
locoz 2020-04-11 09:24:20 +08:00 via Android 1
有趣。如果还能做到楼上所说的效果就太牛逼了😂
|
7
WittBulter 2020-04-11 10:43:56 +08:00
感觉不错。
如果是开源的,有一些性能基线测试我想应该有不少人愿意用。 |
8
John60676 2020-04-11 15:57:41 +08:00
拼图
|
9
dyxang 2020-04-11 21:31:37 +08:00 via Android
让我想到了 q 群里的酷安 app 图片混淆,前段时间很火(主要是一段转发的聊天记录),用来开车了…
|
10
wsph123 2020-04-12 08:09:02 +08:00 via iPhone
好东西🧚♀️
|
11
yuankui 2020-04-12 14:54:01 +08:00
防盗链?
|