【发布时间】:2009-12-27 20:25:45
【问题描述】:
我正在关注以下代码示例:http://www.openssl.org/docs/crypto/sha.html#
在以下之后:
EVP_DigestFinal_ex(&mdctx, md_value, &md_len);
最终的摘要存储在 md_value 中。我想将该摘要复制到另一个相同大小的字符数组中。这是一个两部分的问题。我不明白 md_value 中究竟存储了什么,看起来像二进制。以下 printf 将数据格式化为输出十六进制,这正是我需要的.. 所涉及的哈希的最终字符串版本(在我有上下文的循环中:
printf("val: %02x\n", md_value[i]);
我的问题是,如何仅将十六进制值复制到另一个字符数组。到目前为止,这是我尝试过的,就一个例子而言,这很糟糕:
for(i = 0; i < md_len; i++) {
unsigned char c;
printf("val: %02x\n", md_value[i]);
sprintf(c, "%02x", md_value[i]);
h[0] = c;
}
h 在这种情况下是我想要复制十六进制字符的地方。它是一个字符数组,如下所示:
unsigned char h[EVP_MAX_MD_SIZE];
【问题讨论】: