如何对图片加密使其避免被网盘屏蔽

2022-05-14 10:20:39 +08:00
 AloneHero

先说需求,我想把图片传到网盘上,再在自己的页面上通过请求网盘 api 来浏览图片,这里面会有解密图片数据的机会。

现在问题在于,我怎么样能最简单的加密图片来保证不会被网盘屏蔽?

现在初步的想法是对图片数据每一位异或 1 处理,只是不知道这种简单的处理方式 AI 能不能检测出来,希望有了解这方面的大佬指点一下。

另外大家有没有什么简单高性能又可靠的图片加密方案呢?

6487 次点击
所在节点    程序员
44 条回复
xiangyuecn
2022-05-14 14:14:19 +08:00
不要当帮凶,他要传黄图
dingdangnao
2022-05-14 14:14:39 +08:00
OSS COS 不行?一定要网盘?
ttionya
2022-05-14 14:16:44 +08:00
正好最近我也有这样的想法,想法比较幼稚,可以参考。

识别图片等信息是靠前 X bit 和最后 X bit ,我只要在图片前面和后面插入固定长度的随机字符串就行了,然后解密可以直接在前端做,也可以在后端做。

前端比较简单,可以参考

```js
xhr=new XMLHttpRequest()
xhr.open('GET', 'https://example.com/a.jpg')
xhr.responseType = 'blob'
xhr.onload = function(e) {
console.log(this.response)
const newBlob = this.response.slice(64, this.response.size, this.response.type)
console.log(newBlob)

document.getElementById('image').src=URL.createObjectURL(newBlob)
}
xhr.send()
```
Ultraman
2022-05-14 14:17:23 +08:00
@xiangyuecn 我劝你少管闲事(狗头.jpg )
allanpk716
2022-05-14 15:31:24 +08:00
之前在微博有人做过,思路是直接把图片 N 块切开,上传发微博。然后正确组合的 index 只有你知道,做 js 插件去还原图片。大概是这个思路啊,细节记不住了。
galenzhao
2022-05-14 15:49:31 +08:00
encfs
SunsetShimmer
2022-05-14 17:30:43 +08:00
有哪个网盘有 API 还允许跨域调用和加载文件的啊。。。?
(我记得 sharepoint 好像是这样?)
dingwen07
2022-05-14 18:01:09 +08:00
CBC 一下
jim9606
2022-05-14 18:12:20 +08:00
哪家网盘会允许你当图床用甚至还给可以浏览器跨域使用的 api ?
直接基于二进制流的加密(xor ,aes)要求原图未经有损处理。
我 i 觉得 @allanpk716 说的那个思路可以,将图片切成 MxN 的块,按一个预先指定的映射打乱块的位置,同时每一个块的 U/V 通道做一个无损变换。呈现时用 js 通过 canvas 恢复。这个方法能抵御缩放但可能抵御不了 JPEG 的 DCT 压缩。
tutudou
2022-05-14 18:43:28 +08:00
直接把所有的字节+1 即可
for i in range(len(read_bytes)):
if read_bytes[i] == 0:
read_bytes[i] = 255
else:
read_bytes[i] = read_bytes[i] - 1
haah
2022-05-14 18:56:10 +08:00
网盘为啥要屏蔽图片?
phpfpm
2022-05-14 19:41:17 +08:00
@haah 题主要搞皇瑟
散了吧
winglight2016
2022-05-14 19:43:13 +08:00
对抗这种检测 AI 其实挺简单,按一定规则在图片中插值,不但能防 AI 检测,还能用肉眼看不出来图片改变——也就是说,你的客户端不需要做任何处理
AloneHero
2022-05-14 20:09:24 +08:00
@okakuyang 转 avif 不是很稳,网盘可能检测到也可能检测不到,而且一些图片格式转 avif 如果质量系数低转完太糊,质量系数高体积会膨胀,得不偿失。
@lishoujun 客户端解压还要引入包有点麻烦
@Tanix2
@allanpk716 切图思路确实新奇,不过有点隐患,切的太少仍然容易被识别,切的太多客户端网络并发高,容易阻塞
@SunsetShimmer @jim9606 只是个人用而已,可以在访问官方页面时代理到自己的页面,自己的页面注册上 service worker ,就能实现永久劫持官方页面。
haah
2022-05-14 21:21:50 +08:00
1 、Base64 写到页面里;
2 、颜色分离:透明 /黑白 /彩色。
haah
2022-05-14 21:25:07 +08:00
加密涉及到密钥交换问题,你的场景不适用!
lawler
2022-05-14 21:36:05 +08:00
@allanpk716 #25 这是技术方案。非技术的女孩们用三合一上传新浪。哈哈哈哈哈
Greatshu
2022-05-14 22:11:05 +08:00
图片切成 9 或更多块,打乱重组成一张新图,前端还原
CharlesGray
2022-05-14 22:24:13 +08:00
openssl aes-256-cbc -md sha3-512 -pbkdf2 -iter 114514 -salt -in inputfile -out outputfile
应该是最安全的加密之一了
CharlesGray
2022-05-14 22:24:41 +08:00
@CharlesGray 而且还不会增长文件体积,加密前后大小一样的,aes 速度也很快

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

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

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

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

© 2021 V2EX