AES加密-大文件

3
我正在使用OpenSSL的EVP接口在C语言中进行128/192/256 cbc模式的AES加密。 我在stackoverflow上找到了一个很好的例子,我已经开始编程。
我想知道以下内容:
1. 加密时默认使用什么填充方式? 2. 如果有大量数据,会发生什么?我需要编写代码将其分成128位的数据块吗?还是EVP接口会处理它? 3. 在128位、192位和256位cbc模式下,IV的大小应该是多少(其中只有键长度分别为128、192、256,块大小始终为128)?
谢谢。
2个回答

0
1. 加密没有默认填充。有几种填充方案。对于EVP,有一个加密最终方法,它接受不完整的块并添加填充(默认PKCS填充)并加密它。 2. EVP会处理它。 3. 当使用CBC模式时,IV向量的大小与块大小相同。

那我应该在还有数据的情况下继续调用EVP_EncryptUpdate吗?我有一个很大的数据(最多1GB),它是可变长度的。我将数据分成1024位的块(就像这样)。我应该在这些块上继续调用EVP update吗? - pimmling
如果您由于文件过大而将其分割为1024位,则需要在每个块上调用EVP更新,直到遇到最后一个块,在该块上需要添加填充并因此调用加密最终。 - Milan
我们是否总是需要知道明文的长度才能调用EVP_Decrypt例程?或者说对于一个固定的明文块大小为1024,我们应该传递什么长度到EVP_DecryptUpdate块? - pimmling

0

您可以使用EVP_CIPHER_iv_length()来确定密码算法的IV大小,例如:EVP_CIPHER_iv_length(EVP_aes_128_cbc())


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接