目前在我的项目中,我需要加密一个可变大小的文件(大约1到1.5 GB)
我正在使用openssl项目中的aes算法。但我没有使用整个库,只是一些从"密码"生成密钥的函数。并使用这些密钥加密128字节的固定块
简而言之,
void aes_encrypt(char* in, char* out , AES_KEY ekey);
void aes_decrypt(char* in, char* out , AES_KEY dkey);
现在的主要问题是这些函数的块大小仅为128字节。
所以我必须编写一个包装函数,它接受我的文件并将其分成128个字节的块,并将其提供给这些加密/解密例程。
所以我的问题是,
感谢。
ps:我不熟悉加密(特别是AES)
答案 0 :(得分:3)
块长度为128位或16字节。例如,您可以使用PKCS7填充(参见RFC 2315的第10.3节)使最后一个块长16个字节。
它的工作原理如下:如果需要添加一个字节,则添加一个带有值的字节(所有值都以十六进制显示)01
,如果需要添加两个字节,则添加两个字节,其值为{{1} }}, 等等。如果不需要填充,您仍然需要添加一个带有16个填充字节的块,其值为02
。
要删除填充字节,只需查看文件的最后一个字节,它就会给出要删除的字节数。
另请注意,ECB模式(彼此独立加密块)可能不是最佳使用方式,请同时查看CBC模式。