openssl - 需要从 EVP_sha256() 中释放 EVP_MD*?
问题描述
我正在使用 OpenSSL 并不太熟悉它。试图用它来解码某人从数据包中的另一种编程语言发送给我的东西。无论如何,信息是用 OpenSSL 编码的,所以我需要用它来解码它。我或多或少地工作,但我担心资源使用情况。
我正在PKCS5_PBKDF2_HMAC()
按照加密的方式制作一个digest_key。该函数的参数之一需要调用EVP_sha256()
. 在使用这样的函数时,通常我习惯于调用另一个函数来释放内存或句柄。我找不到适合释放返回的句柄/指针的函数。如果这有什么不同,我会从 C++ 调用。
我应该总是在调用EVP_sha256()
之前调用PKCS5_PBKDF2_HMAC()
,还是应该在 C++ 中使用静态变量以便它只被调用一次?我是否必须担心重复调用它会耗尽内存,还是它总是返回一个指向只分配一次的东西的指针?
... 10 分钟过去了...
好的,我只是看了一下源代码。它返回一个指向已经静态分配的东西的指针,所以看来我不需要担心清理它?
解决方案
没有必要EVP_sha256()
从任何其他类似函数中释放返回值,这些函数返回一个“const”指针到 anEVP_MD
等EVP_CIPHER
。在即将到来的 OpenSSL 3.0 中,有一些函数返回非 const 指针(EVP_MD_fetch()
等EVP_CIPHER_fetch()
)。如果您使用的是 OpenSSL 3.0,并开始使用这些功能,那么您将不得不释放它们。
推荐阅读
- matlab - 拟合参数的最小二乘法
- algorithm - Clojure 中的循环分发
- hyperledger-fabric - Hyperledger Fabric:状态存储和加密存储有什么区别?
- python - 将 Python 文件从 S3 导入 Amazon Elastic MapReduce
- android - Flutter 将一个圆圈掩入容器中
- python - TensorFlow CPU 内存问题(分配超过系统内存的 10%)
- javascript - 使用 SVG 的“圆形”菜单
- excel - 当数据中有空格时如何复制列?
- python - 如何克隆旧的 python conda 环境(当包的链接不再起作用时)
- javascript - 如何将带有表单的 html 文档引用到另一个 html 文档以从中创建表格?