gpt4 book ai didi

c++ - 使用 AES-256-CBC 模式 openssl 的数据加密,不会返回不需要填充的相同大小的数据吗?

转载 作者:行者123 更新时间:2023-11-30 02:02:24 26 4
gpt4 key购买 nike

我正在尝试使用 openssl AES 来加密我的数据我在这个链接中找到了一个非常好的例子。,http://saju.net.in/code/misc/openssl_aes.c.txt但是我仍然可以找到填充数据的问题,尽管它执行的是 key 大小的倍数。例如,它需要 16 个字节作为加密输入或 16 的任意倍数我给了 1024 包括 null .,它仍然给我一个大小为 1040 的输出,但据我所知,AES 输入大小 = 输出大小,如果输入是 128 位/16 字节的倍数。有没有人在我之前试过这个例子或者可以给我任何想法?|提前致谢。

最佳答案

大多数填充方案都要求添加一些最小量的填充总是。这是(至少主要)以便在接收端,您可以查看最后一个字节(或末尾的一些少量数据)并知道末尾有多少数据是填充的,有多少是真实的数据。

例如,典型的填充方案将零字节放在数据之后,最后一个字节包含要填充的字节数。例如,如果您添加了 4 个字节的填充,则填充字节(十六进制)类似于 00 00 00 04。另一种常见的可能性是将相同的值放入所有 填充字节中,因此它看起来像04 04 04 04

在接收端,算法必须准备好剥离填充字节。为此,它查看最后一个字节,告诉它要从末尾删除并忽略多少字节的数据。如果不存在填充,则它将包含一些值(无论消息中的最后一个字节是什么)。由于它无法知道没有添加填充,因此它会查看该值,并删除那么多字节的数据——只有在这种情况下,它才会删除实际数据而不是填充。

尽管当/如果输入恰好是 block 大小的倍数时,设计一种避免添加额外数据的填充方案是可能的,但向每条消息添加至少一个字节的填充要简单得多,因此接收方可以指望始终读取最后一个字节并找出它接收到的内容中有多少是填充的。

关于c++ - 使用 AES-256-CBC 模式 openssl 的数据加密,不会返回不需要填充的相同大小的数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13213809/

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