是否存在将SHA1哈希表示为C字符串的标准方法,以及如何转换为它?

Pro*_*ica 6 c c++ hash openssl

这个问题是关于如何使用OpenSSL库从C中的数据数组创建SHA-1哈希.

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

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

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

Mat*_*lia 12

通常,散列表示为十六进制数字序列(当然,每字节两个).您可以编写代码以使用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();
}
Run Code Online (Sandbox Code Playgroud)

  • 对于一般和长二进制数据是的,但我已经看到短数据和散列(通常足够短)几乎总是以十六进制表示. (2认同)