V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
simonlu9
V2EX  ›  程序员

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

  •  
  •   simonlu9 · 2020-10-29 11:26:53 +08:00 · 3689 次点击
    这是一个创建于 1488 天前的主题,其中的信息可能已经有所发展或是发生改变。

    很久之前就爬过网易云音乐的数据,但当时没有认真分析,现在项目 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 13:36:11 +08:00
    第一轮是 nonce,只能用一次的服务端参数,防止回放攻击。
    simonlu9
        2
    simonlu9  
    OP
       2020-10-29 15:56:03 +08:00
    @iccfish 加 nonce 我也明白,为了每次加密的密文都不一样,但是搞不明白为什么要两次
    brazz
        3
    brazz  
       2020-10-29 16:26:39 +08:00
    你会解密网易云的参数么?逆向解密
    simonlu9
        4
    simonlu9  
    OP
       2020-10-29 17:38:51 +08:00
    @brazz 解密肯定做不到的,私钥放在服务器上,只是模拟请求而已
    brazz
        5
    brazz  
       2020-10-29 18:41:53 +08:00
    如果能正向加密的话 那不就证明我们已经知道私钥了么?
    BIAOXYZ
        6
    BIAOXYZ  
       2020-10-29 21:04:00 +08:00
    这是服务器端执行后要发给客户端的吗?是不是一次 session 中 self.nonce 可以复用啊?
    simonlu9
        7
    simonlu9  
    OP
       2020-10-30 09:13:34 +08:00
    @BIAOXYZ 客户端发给服务端的
    simonlu9
        8
    simonlu9  
    OP
       2020-10-30 09:14:11 +08:00
    @brazz rsa 你只知道公钥,私钥你不知道的
    BIAOXYZ
        9
    BIAOXYZ  
       2020-10-30 19:51:23 +08:00
    @simonlu9 #7 我感觉第一次 AES 加密是加随机化,第二次是用 i 作为密钥来加密。第三个 RSA 是典型的混合加密行为:公钥密码算法加密一个 session key (这个 session key 要求是对称密钥),这里 session key 就是 i 。
    simonlu9
        10
    simonlu9  
    OP
       2020-10-31 11:22:06 +08:00
    @BIAOXYZ 嗯,session key 是每次都会变吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5710 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 08:55 · PVG 16:55 · LAX 00:55 · JFK 03:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.