【问题标题】:Alternative for calculating sha256 to using deprecated openssl code [duplicate]使用已弃用的 openssl 代码计算 sha256 的替代方法 [重复]
【发布时间】:2016-03-21 05:39:47
【问题描述】:

在 /usr/include/openssl/sha.h 中声明的 SHA256_XXX 系列已在 OS-X 10.7 及更高版本中弃用。

int SHA256_Init(SHA256_CTX *c) DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
int SHA256_Update(SHA256_CTX *c, const void *data, size_t len) DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
int SHA256_Final(unsigned char *md, SHA256_CTX *c) DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
unsigned char *SHA256(const unsigned char *d, size_t n,unsigned char *md) DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
void SHA256_Transform(SHA256_CTX *c, const unsigned char *data) DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;

虽然它目前正在运行,但我想知道以后的 OS X 版本有什么替代方案。

【问题讨论】:

  • 一种可能性:在我自己的项目中,我正在构建和交付我自己的 OpenSSL 库或应用程序内置的框架...
  • @MichaelDautermann,这是什么意思,你自己编译 openssl(没有弃用声明)并使用它吗?
  • 是的,I build my own versions of OpenSSL 然后链接到它而不是 Apple 不喜欢我们不使用的 SDK 中内置的版本。

标签: c++ c macos openssl sha256


【解决方案1】:

Common Crypto 支持 SHA256 和其他加密方法,适用于 OS X 和 iOS。添加 Security.framework 并包含<CommonCrypto/CommonDigest.h>。 Common Crypto 是一个“C”API。

【讨论】:

  • 你能告诉我要在 security.framework 中查找哪个标头以进行 sha256 计算吗?
  • 糟糕,它在答案中,但没有正确引用,因此没有显示。固定的。特别是在<CommonCrypto/CommonDigest.h>
【解决方案2】:

目前批准的所有摘要技术是通过 EVP。

https://www.openssl.org/docs/manmaster/crypto/EVP_DigestInit.html#EXAMPLE

SHA256 的示例函数(来自https://wiki.openssl.org/index.php/EVP_Message_Digests

void digest_message(unsigned char *message, unsigned char **digest, unsigned int *digest_len)
{
    EVP_MD_CTX *mdctx;

    if((mdctx = EVP_MD_CTX_create()) == NULL)
        handleErrors();

    if(1 != EVP_DigestInit_ex(mdctx, EVP_sha256(), NULL))
        handleErrors();

    if(1 != EVP_DigestUpdate(mdctx, message, strlen(message)))
        handleErrors();

    if((*digest = (unsigned char *)OPENSSL_malloc(EVP_MD_size(EVP_sha256()))) == NULL)
        handleErrors();

    if(1 != EVP_DigestFinal_ex(mdctx, *digest, digest_len))
        handleErrors();

    EVP_MD_CTX_destroy(mdctx);
}

【讨论】:

    猜你喜欢
    • 2020-04-15
    • 1970-01-01
    • 1970-01-01
    • 2020-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-06
    • 1970-01-01
    相关资源
    最近更新 更多