1
我想散列一個字符串,然後使用該散列作爲文件的名稱。我可以使用加密哈希作爲文件名,還是必須先將其轉換?
我的問題:是,所有的C++ hashers/crypters我所遇到的哈希的std :: string或字符* &返回散列字符串作爲無符號字符*?
如何將該unsigned char *轉換爲char *或std :: string,然後將其寫入文件或文件名?或者我不需要將其轉換爲普通字符串來使用它?
tstring hashString(tstring str)
{
// Post:
unsigned char hashStr[SHA256_DIGEST_SIZE];
std::string messageStr = str;
SHA256::getInstance()->digest(messageStr, hashStr);
//TCHAR *hashStrSigned = reinterpret_cast <TCHAR*>(hashStr);
// can I just use this hashStr to create a file? Or do I have to convert it to char* to use?
Handle newF = CreateFile((LPTSTR)hashStr, GENERIC_ALL, 0, NULL, CREATE_ALWAYS,
0, NULL);
return tstring(hashStrSigned);
}
散列庫可能有一個「hexdigest」函數,你可以調用它來代替「摘要」,它會給你十六進制字符。然後,所有真正需要的是轉換爲'std :: string'的最後一行,儘管您可能還需要與編譯器討論'unsigned char *'和'char *'之間的區別。如果是這樣,最好做'std :: string(hexHash,hexHash + SHA256_HEXDIGEST_SIZE]);' –