部分代码在一个android/ios通用原生库C++代码上。
链接又是 OpenSSL 1.1.1
使用版本 1.0.# 或更早版本,我们曾经拥有EVP_CIPHER_CTX ctx
(不是作为指针)并且我们曾经拥有EVP_CipherInit_ex
但在有关使用 EVP 和 1.1.1 版本解密的各种帖子以及官方指南之后将其删除
在解密密码的方法中,使用了以下 EVP 序列。
EVP_CIPHER_CTX *ctx;
ctx = EVP_CIPHER_CTX_new()
EVP_DecryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, NULL, NULL)
EVP_DecryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, ..., ...)
EVP_DecryptUpdate(ctx, decryptedPassword, ..., encrypted_data, length)
EVP_DecryptFinal_ex(ctx, ... , ...)
EVP_CIPHER_CTX_free(ctx);
偶尔会出现崩溃,回溯是单个 CipherInit 引用,如下所示。
#00 pc 0007253c /data/app/com.xxxxxx==/lib/arm/xxxxxxx.so (EVP_CipherInit_ex+48)
那么问题来了,应该EVP_CipherInit_ex
用吗?
还有怎么可能在不使用它的情况下发生崩溃?