0
我收集這是創建一個MD5散列,但確切地說是什麼被哈希。多次調用CryptHashData
char val1[4] = {...};
DWORD val2 = ...;
CryptCreateHash(hCryptProv, CALG_MD5, 0, 0, &hHash) // Creates hash object
CryptHashData(hHash, reinterpret_cast<const PBYTE>(val1), sizeof(val1), 0) // perform hash #1
CryptHashData(hHash, reinterpret_cast<const PBYTE>(val2), sizeof(val2), 0) // perform hash #2
散列#1與散列#2是如何組合的?
它執行md5(md5(val1)+ val2)嗎?或md5(val1 + val2)?或者我根本沒有考慮的東西?
因此,如果val2爲0,例如,那麼我應該能夠刪除第二個哈希調用,而不會對最終的哈希值產生任何影響?這似乎並不是這種情況 – jglouie 2012-02-06 18:44:40
@LemonBeagle它不是這樣,因爲如果你添加一個值爲0的DWORD到哈希對象,數據的長度改變了。值爲零並不意味着沒有數據被添加到散列對象。這意味着值爲0的sizeof(DWORD)數據被添加到散列對象。 – 2012-02-06 18:48:09
阿哈..我只是簡單地加入,不拼接...非常感謝 – jglouie 2012-02-06 18:50:31