js 加密, PHP 解密,有没有最好的方法?

2022-03-10 09:47:44 +08:00
 kisshere
基本可以实现前端加密和后端解密,并且较难被破解的方法?
4290 次点击
所在节点    程序员
47 条回复
leeyuzhe
2022-03-10 09:49:46 +08:00
rsa 不就行了,跟语言没关系啊
cmdOptionKana
2022-03-10 09:53:37 +08:00
后端向前端发一个公钥,前端用公钥加密,密文传给后端,后端用私钥解密。
ch2
2022-03-10 09:56:05 +08:00
->并且较难被破解的方法?
js 用 wasm 加密可以增大破解难度,但是本质上只要利益够大迟早会被破解
watcher
2022-03-10 09:58:55 +08:00
用 wasm 加个壳吧
LeeReamond
2022-03-10 10:00:18 +08:00
没方法,js 加密本身就很迷惑,加密算法无法保密->wasm 虽说可以编译,但解起来也就那回事,数据源也是暴露前端的无法加密,所以加密给谁看呢
kisshere
2022-03-10 10:00:25 +08:00
@leeyuzhe 这个公钥一抓包不就被破解了
tagtag
2022-03-10 10:07:26 +08:00
建议描述一下你的需求,首先前端和后端的通信加密只要有 https 就可以了,除非是你前端产生的内容不想让用户看到所以加密传回后端,但是本质这个需求单纯通过 JavaScript 是不可能的,前端代码对于浏览器本身就是全透明的,你怎么产生的怎么加密的都没什么意义,顶多混淆了代码,看起来费点力气而已,wasm 楼上也说了,存在反编译问题,也只是增加了难度,所以问题应该出在需求上。
cpstar
2022-03-10 10:09:25 +08:00
有个问题,公私钥是不是只针对非对称加密,LZ 需要的是不是一个对称加密,以及密钥分发方案。
streamrx
2022-03-10 10:15:01 +08:00
怎么弄都会被破解, 只要利益超过破解付出的成本
dzdh
2022-03-10 10:17:14 +08:00
场景呢?没场景?

登录密码加密吗?上 https 足够了,针对这个场景任何前端加密都是脱裤子放屁。

显示隐私内容?前端输入密码才能看?那应该是后端发来密文吧。
maichael
2022-03-10 10:19:34 +08:00
前端加密是个永恒的话题,只能防懒鬼不能防有心人。

不过有时候还是要看你的需求,毕竟不同的加密需求有不同的解决办法。
zhanggg
2022-03-10 10:37:46 +08:00
非对称随便弄一个就好了啊,私钥存服务器,公钥发给前端
公钥加密的内容即使被抓包也解不了啊,又没有私钥

场景交代的太模糊了,直接建议双向 https 吧,以保证双向信任和内容加密
就是每次打开你前端界面要贴证书才能访问
xiangyuecn
2022-03-10 10:44:25 +08:00
重要原则:只要代码写的足够复杂,别人就会懒得看🐶,从而增加了破解难度😂。随便搞个位移,base64 过一下 就能糊弄住很大一部分人了
ch2
2022-03-10 10:47:24 +08:00
->该字符串的实际内容不想被用户抓包察觉
rsa 加密一下就行了,只有有私钥的才能解密
同一个字符串公钥加密之后每次密文都不一样,谁也不知道内容是什么
500
2022-03-10 10:51:14 +08:00
这是个伪需求
tagtag
2022-03-10 10:54:42 +08:00
简单点就是把加密过程的代码进行大量的混淆操作,增加了读代码难度,复杂点就是把加密工程用 wasm 封起来,毕竟反编译的门槛一下子就上去了。
sanggao
2022-03-10 10:56:22 +08:00
这样加密的意义何在?
3dwelcome
2022-03-10 11:01:07 +08:00
前端想加密数据有几种方法。

第一个学 chrome 的 CDP ,给每一个 JSON 传输数据包,都弄一个服务器来维护的自增长 ID 。也就是每个请求就算被黑客抓取到也没关系,服务器的验证 ID 随时在变化,没办法重放。

第二个学 HTTP2.0 的二进制协议,用 gRPC 来封装 json 数据,对于二进制加密。前端最大的弱点,在于数据都是明文,黑客看一眼就懂。如果是私有二进制协议,他还要花时间分析,还未必能分析出来正确结果。

第三是学 websocket 的 zlib 扩展压缩,就是客户端和服务器各维护一个动态变化的压缩字典,这样黑客获取获取中间一段数据也没用,他没有对应的字典能正确解压,也是百搭。
dongtingyue
2022-03-10 11:43:30 +08:00
@kisshere rsa 公钥只是加密。。。解密是私钥。
cmdOptionKana
2022-03-10 11:46:27 +08:00
@kisshere 用公钥加密的东西,用户没有私钥,如何破解?

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

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

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

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

© 2021 V2EX