Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将Botan SHA256输出转换为base64以匹配.NET SHA256Managed().ComputeHash()_C++_Qt_Cryptography_Botan - Fatal编程技术网

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

C++ 将Botan SHA256输出转换为base64以匹配.NET SHA256Managed().ComputeHash(),c++,qt,cryptography,botan,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 = HashD

我正在将.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];
}

qPasswordHash是否需要通过Base64筛选器(如中所示)来匹配.NET类的输出?如果是这样的话,您能给我指出示例代码或提供使用此Botan方法的正确语法示例吗?

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

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