OpenSSL EVP_CIPHER_CTX_set_padding 不工作
OpenSSL EVP_CIPHER_CTX_set_padding not working
我正在尝试 encrypt/decrypt 使用 EVP 接口使用 AES、CBC 和 PKCS#7 填充。我正在使用 example found on the Wiki.
我在创建和初始化上下文后正在做 EVP_CIPHER_CTX_set_padding(ctx, 0)
,如果明文不是 16 字节的倍数,则不应添加填充并失败。尽管如此,密文总是包含一个仅由填充组成的额外块。
我使用的代码是从教程中复制和粘贴的,我只是在加密和解密中添加 EVP_CIPHER_CTX_set_padding(ctx, 0)
,如下所示:
/* Create and initialise the context */
if (!(ctx = EVP_CIPHER_CTX_new())) handleErrors();
EVP_CIPHER_CTX_set_padding(ctx, 0);
我是不是做错了什么?
显然 EVP_DecryptInit_ex
和 EVP_EncryptInit_ex
都重新初始化上下文,因此任何上下文更改(例如设置填充)都应在调用这些方法后执行。
我正在尝试 encrypt/decrypt 使用 EVP 接口使用 AES、CBC 和 PKCS#7 填充。我正在使用 example found on the Wiki.
我在创建和初始化上下文后正在做 EVP_CIPHER_CTX_set_padding(ctx, 0)
,如果明文不是 16 字节的倍数,则不应添加填充并失败。尽管如此,密文总是包含一个仅由填充组成的额外块。
我使用的代码是从教程中复制和粘贴的,我只是在加密和解密中添加 EVP_CIPHER_CTX_set_padding(ctx, 0)
,如下所示:
/* Create and initialise the context */
if (!(ctx = EVP_CIPHER_CTX_new())) handleErrors();
EVP_CIPHER_CTX_set_padding(ctx, 0);
我是不是做错了什么?
显然 EVP_DecryptInit_ex
和 EVP_EncryptInit_ex
都重新初始化上下文,因此任何上下文更改(例如设置填充)都应在调用这些方法后执行。