网易云音乐加密疑问,为什么要经过两次 aes 加密

2020-10-29 11:26:53 +08:00
 simonlu9

很久之前就爬过网易云音乐的数据,但当时没有认真分析,现在项目 api 请求加密突然想参考网易云音乐的加密的方式,加密如下

i = self.create16RandomBytes()
encText = self.AESEncrypt(input_text, self.nonce)
encText = self.AESEncrypt(encText, i)
encSecKey = self.RSAEncrypt(i, self.public_key, self.modulus)


上面的算法一看就知道模仿 https 的加密流程的,但是我想不明白为什么要经过两次 aes,意义何在,我觉得随机生成 16 位的密钥通过 aes 加密,然后 rsa 加密密钥传给服务端就可以啦,求解答
3513 次点击
所在节点    程序员
10 条回复
iccfish
2020-10-29 13:36:11 +08:00
第一轮是 nonce,只能用一次的服务端参数,防止回放攻击。
simonlu9
2020-10-29 15:56:03 +08:00
@iccfish 加 nonce 我也明白,为了每次加密的密文都不一样,但是搞不明白为什么要两次
brazz
2020-10-29 16:26:39 +08:00
你会解密网易云的参数么?逆向解密
simonlu9
2020-10-29 17:38:51 +08:00
@brazz 解密肯定做不到的,私钥放在服务器上,只是模拟请求而已
brazz
2020-10-29 18:41:53 +08:00
如果能正向加密的话 那不就证明我们已经知道私钥了么?
BIAOXYZ
2020-10-29 21:04:00 +08:00
这是服务器端执行后要发给客户端的吗?是不是一次 session 中 self.nonce 可以复用啊?
simonlu9
2020-10-30 09:13:34 +08:00
@BIAOXYZ 客户端发给服务端的
simonlu9
2020-10-30 09:14:11 +08:00
@brazz rsa 你只知道公钥,私钥你不知道的
BIAOXYZ
2020-10-30 19:51:23 +08:00
@simonlu9 #7 我感觉第一次 AES 加密是加随机化,第二次是用 i 作为密钥来加密。第三个 RSA 是典型的混合加密行为:公钥密码算法加密一个 session key (这个 session key 要求是对称密钥),这里 session key 就是 i 。
simonlu9
2020-10-31 11:22:06 +08:00
@BIAOXYZ 嗯,session key 是每次都会变吗?

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

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

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

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

© 2021 V2EX