我想散列從openssl使用SHA1的命令行參數的結果,它工作正常。問題是我需要比較從SHA1 PHP函數獲得的其他結果,並且得到的結果不一樣。當我嘗試哈希與修復參數可以說「警察」的結果是相同的,所以我認爲問題是,我從DOS控制檯得到的結果是用Unicode或ASCII編碼。散列重定向DOS輸出
這是我如何獲得DOS結果
std::string exec(char* cmd) {
FILE* pipe = _popen(cmd, "r");
if (!pipe) return "ERROR";
char buffer[128];
std::string result = "";
while(!feof(pipe)) {
if(fgets(buffer, 128, pipe) != NULL)
result += buffer;
}
_pclose(pipe);
return result;
}
一切工作正常,我可以湊我從結果得到的數據。
std::string tag = exec_result.substr (found+2,11);
SHA1((unsigned char *)tag.c_str(), strlen(tag.c_str()), temp);
的問題是,散列值不是i。從PHP SHA1函數得到了相同的,所以我想可以是這兩者的功能的執行沒有相同的,但是然後我用試過SHA1 C++函數固定的參數和結果是相等的,所以我認爲差異可能是從DOS控制檯得到的輸出字符集。可有人請helpme
也許使用調試器來檢查標籤字符串的內容可以揭示的東西? –
是的,這是我做的,我意識到有一個額外的空間,我沒有注意到。一旦我從我的字符串中刪除了這個空間,那麼這兩個函數(C++和PHP)的結果都是一樣的。謝謝你的時間和你的幫助 – ocr