gpt4 book ai didi

c - 在 c 中预先计算 AES256 加密的 "buffer"的大小

转载 作者:太空宇宙 更新时间:2023-11-04 01:39:30 25 4
gpt4 key购买 nike

我如何计算 AES256 加密文件/缓冲区的大小。

我执行 (n + AES_BLOCK_SIZE -1) 字节的 malloc(其中 n 是未加密的缓冲区大小)。

但是加密缓冲区的大小会一直是那个大小吗?也能“更小”吗?

知道我如何预先计算确切的尺寸吗?

谢谢

最佳答案

这取决于您使用的填充。最常见的填充方案(因为它是可逆的并且包含轻微的完整性检查)是 PKCS#5-padding:这附加了一些字节,使得最终大小是 block 大小的倍数,并且至少附加了一个字节. (每个附加的字节都与附加的字节数具有相同的值。)

即最多将附加一个完整 block (AES 为 16 个字节)。

n + AES_BLOCK_SIZE 总是足够的(在某些情况下恰好足够),但您可以更精确地计算它为 n + AES_BLOCK_SIZE - (n % AES_BLOCK_SIZE)

请注意,有些操作模式根本不需要填充,例如 CTR、CFB 和 OFB 模式。另请注意,您通常也想传输初始化 vector (另一个完整 block )。

关于c - 在 c 中预先计算 AES256 加密的 "buffer"的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8332720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com