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(); }