1

部分代码在一个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用吗?

还有怎么可能在不使用它的情况下发生崩溃?

4

0 回答 0