将Botan SHA256输出转换为base64以匹配.NET SHA256Managed()。ComputeHash()

时间:2012-11-07 01:58:05

标签: c++ qt cryptography botan

我正在将一部分.NET应用程序移植到Linux上的Qt。我试图复制.NET函数的结果来创建密码+ salt的SHA-256哈希。 .NET代码是

return new SHA256Managed().ComputeHash(buffer);

我有创建哈希的代码,但它不是允许我将其嵌入json对象的形式。

// create the hash of the salt+password
Botan::SecureVector<Botan::byte> passwordHash = HashData(salt,StringToArray(m_password));
// convert to a QByteArray
QByteArray qPasswordHash;
for(uint i=0; i<passwordHash.size();++i){
    qPasswordHash[i]= passwordHash[i];
}

作为参考,StringToArray方法如下所示

QByteArray StringToArray(QString szInput){
    QByteArray buffer = szInput.toUtf8().data();
    return buffer;
}

是否需要通过Documentation中显示的Base64过滤器来放置qPasswordHash以匹配.NET类的输出?如果是这样,你可以指出我的示例代码或提供使用此Botan方法的正确语法的示例吗?

1 个答案:

答案 0 :(得分:0)

最常用的方法是使用十六进制编码,即每个字节在字符串中表示为2个十六进制数字。这比Base64更容易实现。