0

我正在将 .NET 应用程序的一部分移植到 Linux 上的 Qt。我正在尝试复制 .NET 函数的结果以创建密码 + 盐的 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;
}

qPasswordHash 是否需要通过 Base64 过滤器(例如文档中显示的过滤器)才能匹配 .NET 类的输出?如果是这样,您能否指出示例代码或提供使用此 Botan 方法的正确语法示例?

4

1 回答 1

0

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

于 2012-11-07T10:01:55.543 回答