AES CBC IV 问题

2022-12-04 20:39:25 +08:00
 holinhot
把随机 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)
`
923 次点击
所在节点    问与答
6 条回复
Cavolo
2022-12-04 21:26:13 +08:00
存储随机 IV 在密文最前面是一种常见的加密做法,因为 IV 的作用实际上只是让相同的明文产生不同的密文。如果使用 HLS AES 128 CBC 文件,这种做法是可行的,并且 HLS 是支持将 IV 存储在密文最前面的。在上面给出的代码中,加密函数将 IV 随机生成,然后将其附加在加密后的密文前面,而解密函数则将 IV 从密文中分离出来,并使用它来解密密文。
holinhot
2022-12-04 21:37:37 +08:00
@Cavolo 我写的逻辑是这样的,只是不确定标准的 HLS AES 128 CBC 解密逻辑是否是这样的。
Rache1
2022-12-04 22:09:46 +08:00
@Cavolo 又抓住一个 AI
44670
2022-12-04 22:14:19 +08:00
是的,HLS AES 128 CBC 文件不支持将 IV 存储在密文最前面的方式。HLS 通常采用在每个分片中使用相同的 IV 来保证分片之间的数据一致性。因此,将 IV 存储在密文最前面的方式不适用于 HLS 。
holinhot
2022-12-04 22:52:26 +08:00
anviod
2022-12-05 13:58:06 +08:00
上面这两个都是 AI 无聊的回复.

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

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

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

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

© 2021 V2EX