simonlu9
V2EX  ›  程序员

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

By simonlu9 at 2020 年 10 月 29 日 · 4749 次点击

很久之前就爬过网易云音乐的数据,但当时没有认真分析,现在项目 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 加密密钥传给服务端就可以啦,求解答
10 条回复  •  2020-10-31 11:22:06 +08:00
iccfish
   1
iccfish  
   2020 年 10 月 29 日
第一轮是 nonce,只能用一次的服务端参数,防止回放攻击。
simonlu9
   2
simonlu9  
OP
   2020 年 10 月 29 日
@iccfish 加 nonce 我也明白,为了每次加密的密文都不一样,但是搞不明白为什么要两次
brazz
   3
brazz  
   2020 年 10 月 29 日
你会解密网易云的参数么?逆向解密
simonlu9
   4
simonlu9  
OP
   2020 年 10 月 29 日
@brazz 解密肯定做不到的,私钥放在服务器上,只是模拟请求而已
brazz
   5
brazz  
   2020 年 10 月 29 日
如果能正向加密的话 那不就证明我们已经知道私钥了么?
BIAOXYZ
   6
BIAOXYZ  
   2020 年 10 月 29 日
这是服务器端执行后要发给客户端的吗?是不是一次 session 中 self.nonce 可以复用啊?
simonlu9
   7
simonlu9  
OP
   2020 年 10 月 30 日
@BIAOXYZ 客户端发给服务端的
simonlu9
   8
simonlu9  
OP
   2020 年 10 月 30 日
@brazz rsa 你只知道公钥,私钥你不知道的
BIAOXYZ
   9
BIAOXYZ  
   2020 年 10 月 30 日
@simonlu9 #7 我感觉第一次 AES 加密是加随机化,第二次是用 i 作为密钥来加密。第三个 RSA 是典型的混合加密行为:公钥密码算法加密一个 session key (这个 session key 要求是对称密钥),这里 session key 就是 i 。
simonlu9
   10
simonlu9  
OP
   2020 年 10 月 31 日
@BIAOXYZ 嗯,session key 是每次都会变吗?
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
© 2026 V2EX · 38ms · 3.9.8.5