Alternative Hash Funktion für MD4, MD5 & SHA-1
(MSDN stellt leider nicht sehr viel Informationen zu diesen Funktionen zur Verfügung)
Wie hier (MD5 Hasher optimieren | 0xf Level 20) schon beschrieben gibt es ja neben _CryptHashData() noch eine Alternative einen Hashstring zu generieren.
Ich habe das mal für MD4 und SHA erweitert. Es lässt sich (leicht umgeschrieben) auch ein File-Hash mit diesen Funktionen erstellen (leider siegt hier die Faulheit :D)
AutoIt: MD4.au3
MsgBox(0, "MD4", _MD4("test"))
Func _MD4($string)
Static Local $hDLL = DllOpen("advapi32.dll")
Static Local $MD4_CTX = DllStructCreate("dword i[2];dword buf[4];ubyte in[64];ubyte digest[16]")
DllCall($hDLL, "none", "MD4Init", "ptr", DllStructGetPtr($MD4_CTX))
DllCall($hDLL, "none", "MD4Update", "ptr", DllStructGetPtr($MD4_CTX), "str", $string, "dword", StringLen($string))
DllCall($hDLL, "none", "MD4Final", "ptr", DllStructGetPtr($MD4_CTX))
return Hex(DllStructGetData($MD4_CTX, "digest"))
EndFunc
Alles anzeigen
AutoIt: MD5.au3
MsgBox(0, "MD5", _MD5("test"))
Func _MD5($string)
Static Local $hDLL = DllOpen("advapi32.dll")
Static Local $MD5_CTX = DllStructCreate("dword i[2];dword buf[4];ubyte in[64];ubyte digest[16]")
DllCall($hDLL, "none", "MD5Init", "ptr", DllStructGetPtr($MD5_CTX))
DllCall($hDLL, "none", "MD5Update", "ptr", DllStructGetPtr($MD5_CTX), "str", $string, "dword", StringLen($string))
DllCall($hDLL, "none", "MD5Final", "ptr", DllStructGetPtr($MD5_CTX))
return Hex(DllStructGetData($MD5_CTX, "digest"))
EndFunc
Alles anzeigen
AutoIt: SHA.au3
MsgBox(0, "SHA", _SHA("test"))
Func _SHA($string)
Static Local $hDLL = DllOpen("advapi32.dll")
Static Local $SHA_CTX = DllStructCreate("dword unknown[6];dword state[5];dword count[2];ubyte buffer[64];ubyte digest[20]")
DllCall($hDLL, "none", "A_SHAInit", "ptr", DllStructGetPtr($SHA_CTX))
DllCall($hDLL, "none", "A_SHAUpdate", "ptr", DllStructGetPtr($SHA_CTX), "str", $string, "dword", StringLen($string))
DllCall($hDLL, "none", "A_SHAFinal", "ptr", DllStructGetPtr($SHA_CTX), "ptr", DllStructGetPtr($SHA_CTX) + 0x74)
return Hex(DllStructGetData($SHA_CTX, "digest"))
EndFunc
Alles anzeigen