c – 是否有一种将SHA1哈希表示为C字符串的标准方法,以及如何转换为它?

前端之家收集整理的这篇文章主要介绍了c – 是否有一种将SHA1哈希表示为C字符串的标准方法,以及如何转换为它?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
This question是关于如何使用 OpenSSL库从C中的数据数组创建SHA-1哈希.

它返回一个包含哈希值的20个字节的数组.是否有一些标准的方式以字符串形式表示数据,而不是二进制?

如果是这样,OpenSSL本身是否有一个函数转换为所述字符串格式?

如果没有,应该怎么做?当然,我可以编写自己的编码,使用base64或者不是,但是有一些规范格式吗?

解决方法

通常,散列表示为十六进制数字序列(当然,每字节两个).你可以编写代码来使用带有正确修饰符的ostringstream轻松编写这样的东西:
#include <string>
#include <sstream>
#include <iomanip>

std::string GetHexRepresentation(const unsigned char * Bytes,size_t Length)
{
    std::ostringstream os;
    os.fill('0');
    os<<std::hex;
    for(const unsigned char * ptr=Bytes;ptr<Bytes+Length;ptr++)
        os<<std::setw(2)<<(unsigned int)*ptr;
    return os.str();
}
原文链接:https://www.f2er.com/c/116382.html

猜你在找的C&C++相关文章