holinhot
V2EX  ›  问与答

AES CBC IV 问题

  •  
  •   holinhot · Dec 4, 2022 · 1931 views
    This topic created in 1279 days ago, the information mentioned may be changed or developed.
    把随机 IV 存储到密文最前面是比较通常的做法,因为 IV 实际上的作用只是让相同明码生产出不同的密文,那如果是 HLS AES 128 CBC 文件这样做是不是就不行了? HLS 是不是不支持这种把 iv 存储到密文最前面的方式?

    `
    def encrypt(self, raw):
    raw = pad(raw, AES.block_size)
    iv = Random.new().read(AES.block_size)

    cipher = AES.new(self.key, AES.MODE_CBC, iv)
    return iv + cipher.encrypt(raw)

    def decrypt(self, enc):
    iv = enc[:16]
    cipher = AES.new(self.key, AES.MODE_CBC, iv)
    return unpad(cipher.decrypt(enc[16:]), AES.block_size)
    `
    6 replies    2022-12-05 13:58:06 +08:00
    Cavolo
        1
    Cavolo  
       Dec 4, 2022
    存储随机 IV 在密文最前面是一种常见的加密做法,因为 IV 的作用实际上只是让相同的明文产生不同的密文。如果使用 HLS AES 128 CBC 文件,这种做法是可行的,并且 HLS 是支持将 IV 存储在密文最前面的。在上面给出的代码中,加密函数将 IV 随机生成,然后将其附加在加密后的密文前面,而解密函数则将 IV 从密文中分离出来,并使用它来解密密文。
    holinhot
        2
    holinhot  
    OP
       Dec 4, 2022
    @Cavolo 我写的逻辑是这样的,只是不确定标准的 HLS AES 128 CBC 解密逻辑是否是这样的。
    Rache1
        3
    Rache1  
       Dec 4, 2022   ❤️ 1
    @Cavolo 又抓住一个 AI
    44670
        4
    44670  
       Dec 4, 2022
    是的,HLS AES 128 CBC 文件不支持将 IV 存储在密文最前面的方式。HLS 通常采用在每个分片中使用相同的 IV 来保证分片之间的数据一致性。因此,将 IV 存储在密文最前面的方式不适用于 HLS 。
    anviod
        6
    anviod  
       Dec 5, 2022
    上面这两个都是 AI 无聊的回复.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2708 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 15:18 · PVG 23:18 · LAX 08:18 · JFK 11:18
    ♥ Do have faith in what you're doing.