• 请不要在回答技术问题时复制粘贴 AI 生成的内容
simonlu9
V2EX  ›  程序员

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

  •  
  •   simonlu9 · Oct 29, 2020 · 4921 views
    This topic created in 2206 days ago, the information mentioned may be changed or developed.

    很久之前就爬过网易云音乐的数据,但当时没有认真分析,现在项目 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 replies  •  2020-10-31 11:22:06 +08:00
    iccfish
    iccfish
    Oct 29, 2020
    1
    第一轮是 nonce,只能用一次的服务端参数,防止回放攻击。
    simonlu9
    simonlu9
    OP
    Oct 29, 2020
    2
    @iccfish 加 nonce 我也明白,为了每次加密的密文都不一样,但是搞不明白为什么要两次
    brazz
    brazz
    Oct 29, 2020
    3
    你会解密网易云的参数么?逆向解密
    simonlu9
    simonlu9
    OP
    Oct 29, 2020
    4
    @brazz 解密肯定做不到的,私钥放在服务器上,只是模拟请求而已
    brazz
    brazz
    Oct 29, 2020
    5
    如果能正向加密的话 那不就证明我们已经知道私钥了么?
    BIAOXYZ
    BIAOXYZ
    Oct 29, 2020
    6
    这是服务器端执行后要发给客户端的吗?是不是一次 session 中 self.nonce 可以复用啊?
    simonlu9
    simonlu9
    OP
    Oct 30, 2020
    7
    @BIAOXYZ 客户端发给服务端的
    simonlu9
    simonlu9
    OP
    Oct 30, 2020
    8
    @brazz rsa 你只知道公钥,私钥你不知道的
    BIAOXYZ
    BIAOXYZ
    Oct 30, 2020
    9
    @simonlu9 #7 我感觉第一次 AES 加密是加随机化,第二次是用 i 作为密钥来加密。第三个 RSA 是典型的混合加密行为:公钥密码算法加密一个 session key (这个 session key 要求是对称密钥),这里 session key 就是 i 。
    simonlu9
    simonlu9
    OP
    Oct 31, 2020
    10
    @BIAOXYZ 嗯,session key 是每次都会变吗?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2614 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 04:27 · PVG 12:27 · LAX 20:27 · JFK 23:27
    ♥ Do have faith in what you're doing.