【发布时间】:2017-05-24 15:25:26
【问题描述】:
据我所知,OpenSSL 的函数FIPS_mode_set 不应该影响加密。它所做的只是在使用弱密码时终止程序。
我有一段代码使用EVP_aes_128 加密:
EVP_CIPHER_CTX ctx;// = EVP_CIPHER_CTX_new();
EVP_CIPHER_CTX_init(&ctx);
const EVP_CIPHER *cipher = EVP_aes_128_cbc();
EVP_EncryptInit(&ctx, cipher, key, IV);
EVP_CIPHER_CTX_set_padding (&ctx, 0);
EVP_EncryptUpdate(&ctx, encrypted.get(), &encrypted_size, paddedPlain.get(), encrypted_size);
return encrypted;
这段代码是一致的(我每次运行都得到相同的输出)并且总是按预期工作(解密函数将它解密回来没有问题)。但是当我在运行开始时调用FIPS_mode_set(1) 时,我在输出缓冲区中得到一个不一致的(每次运行时输出不同)的输出。
我使用的是 OpenSSL 版本 1.0.2k。
什么可能导致这种行为?
【问题讨论】:
-
“输出不一致”是什么意思?你有一个期望值(+推理你为什么期望它)和实际结果吗?如果你这样做,请将它包含在问题中。
-
@MaartenBodewes - 我添加了更多信息来回答您的所有问题。
标签: encryption openssl fips