计算 sha256 以使用已弃用的 openssl 代码的替代方法
Alternative for calculating sha256 to using deprecated openssl code
/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 版本的替代方案是什么。
目前批准的所有摘要技术都是通过 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);
}
Common Crypto 支持 SHA256 和其他加密方法,可用于 OS X 和 iOS。添加 Security.framework 并包含 <CommonCrypto/CommonDigest.h>
。普通密码是 "C" API.
/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 版本的替代方案是什么。
目前批准的所有摘要技术都是通过 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);
}
Common Crypto 支持 SHA256 和其他加密方法,可用于 OS X 和 iOS。添加 Security.framework 并包含 <CommonCrypto/CommonDigest.h>
。普通密码是 "C" API.