手机版
你好,游客 登录 注册
背景:
阅读新闻

在OpenSSL 0.9.7c 下找不到 SHA512 算法

[日期:2013-01-21] 来源:Linux社区  作者:yasi_xi [字体: ]

(假设 OpenSSL 头文件路径是 /yasi/code/openssl-1.0.1c/include,库文件路径是 /usr/lib64)

本文示例代码下载

免费下载地址在 http://linux.linuxidc.com/

用户名与密码都是www.linuxidc.com

具体下载目录在 /2013年资料/1月/21日/在OpenSSL 0.9.7c 下找不到 SHA512 算法

Build环境:

CentOS 6.3,64 bit

问题:

下面的代码在上述环境中build,使用OpenSSL 0.9.7c的库,build成功,但运行时出错。

#include <stdio.h>
#include <string.h>
#include <openssl/evp.h>


int main(int argc, char* argv[])
{
EVP_MD_CTX mdctx;
const EVP_MD *md;
char mess1[] = "Test Message\n";
char mess2[] = "Hello World\n";
unsigned char md_value[EVP_MAX_MD_SIZE];
unsigned int md_len;
int i;


OpenSSL_add_all_digests();  // even called this


if(!argv[1]) {
printf("Usage: mdtest digestname\n");
exit(1);
}


md = EVP_get_digestbyname(argv[1]);  // still failed (md is 0x0 after this line) here when argv[1] is "sha512"


if(!md) {
printf("Unknown message digest %s\n", argv[1]);
exit(1);
}


EVP_MD_CTX_init(&mdctx);
EVP_DigestInit_ex(&mdctx, md, NULL);
EVP_DigestUpdate(&mdctx, mess1, strlen(mess1));
EVP_DigestUpdate(&mdctx, mess2, strlen(mess2));
EVP_DigestFinal_ex(&mdctx, md_value, &md_len);
EVP_MD_CTX_cleanup(&mdctx);


printf("Digest is: ");
for(i = 0; i < md_len; i++) printf("%02x", md_value[i]);
printf("\n");


return 0;
}

原因:

尝试了使用Openssl 0.9.8e 和 1.0.1c 两个版本,都没有出错。所以,使用Openssl 0.9.7c出错的原因很可能就是:Openssl 0.9.7c不支持SHA512算法。(注意,在0.9.7c下使用MD5是可以的)

linux
相关资讯       openssl  SHA512 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款