2012-11-07 44 views
0

我將一個.NET應用程序的一部分移植到Linux上的Qt。我正在嘗試複製.NET函數的結果以創建密碼+ salt的SHA-256哈希。在.NET代碼將Botan SHA256輸出轉換爲base64以匹配.NET SHA256Managed()。ComputeHash()

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]; 
} 

作爲參考,下面示出

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

的StringToArray方法是否qPasswordHash需要通過一個Base64濾波器放在如以從該輸出匹配在Documentation所示的一個.NET類?如果是的話,你能指點我的例子代碼還是提供使用這種Botan方法的正確語法的例子?

回答

0

最常用的方法是使用十六進制編碼,即每個字節在字符串中表示爲2個十六進制數字。這比Base64更容易實現。