jlorenz1 Posted March 22, 2008 Share Posted March 22, 2008 (edited) For eMule I need an UDF to calculate a MD4 Hash und back. All I have found was an UDF for a MD5 Hash from http://www.autoitscript.com/forum/index.php?showtopic=49952. I have no idea which are the differences between MD5 und MD4. Perhaps someone has an UDF for MD4. Thanx in advance Johannes Edited March 23, 2008 by jlorenz1 Johannes LorenzBensheim, Germanyjlorenz1@web.de[post="12602"]Highlightning AutoIt Syntax in Notepad++ - Just copy in your Profile/application data/notepad++[/post] Link to comment Share on other sites More sharing options...
jlorenz1 Posted March 25, 2008 Author Share Posted March 25, 2008 (edited) After some long search I've found these links:md5.au3 some encrypt.au3sMD5 with an external programmwith external programm IIand this one , which could be used as template:greetings Johannesexpandcollapse popupFunc md5($sMessage) Local $Padding = Binary('0x80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000') Local $bytes = Binary($sMessage) + BinaryMid($Padding,1,BinaryLen($Padding) - Mod(BinaryLen($sMessage),64)) + BinaryMid(Binary(BinaryLen($sMessage)*8)+Binary(0),1,8) Local $x[BinaryLen($bytes)/4] For $i = 1 To BinaryLen($bytes) Step 4 $x[($i-1)/4] = Dec(StringTrimLeft(Binary(BinaryMid($bytes,$i+3,1) + BinaryMid($bytes,$i+2,1) + BinaryMid($bytes,$i+1,1) + BinaryMid($bytes,$i,1)),2)) Next Local $a = 0x67452301, $b = 0xEFCDAB89, $c = 0x98BADCFE, $d = 0x10325476 For $k = 0 To UBound($x) - 1 Step 16 $AA = $a $BB = $b $CC = $c $DD = $d ; The hex number in the middle of each of the following lines ; an element from the 64 element table constructed with ; T(i) = Int(4294967296 * Abs(Sin(i))) where i is 1 to 64. ; ; However, for speed we don't want to calculate the value every time. $a = BitOR(BitRotate(BitOR($a + BitOR(BitOR(BitOR(BitAND($b, $c), BitAND((BitNOT($b)), $d)) + $x[$k + 0x0],0) + 0xD76AA478,0),0), 0x07,"D")+$b,0) $d = BitOR(BitRotate(BitOR($d + BitOR(BitOR(BitOR(BitAND($a, $b), BitAND((BitNOT($a)), $c)) + $x[$k + 0x1],0) + 0xE8C7B756,0),0), 0x0C,"D")+$a,0) $c = BitOR(BitRotate(BitOR($c + BitOR(BitOR(BitOR(BitAND($d, $a), BitAND((BitNOT($d)), $b)) + $x[$k + 0x2],0) + 0x242070DB,0),0), 0x11,"D")+$d,0) $b = BitOR(BitRotate(BitOR($b + BitOR(BitOR(BitOR(BitAND($c, $d), BitAND((BitNOT($c)), $a)) + $x[$k + 0x3],0) + 0xC1BDCEEE,0),0), 0x16,"D")+$c,0) $a = BitOR(BitRotate(BitOR($a + BitOR(BitOR(BitOR(BitAND($b, $c), BitAND((BitNOT($b)), $d)) + $x[$k + 0x4],0) + 0xF57C0FAF,0),0), 0x07,"D")+$b,0) $d = BitOR(BitRotate(BitOR($d + BitOR(BitOR(BitOR(BitAND($a, $b), BitAND((BitNOT($a)), $c)) + $x[$k + 0x5],0) + 0x4787C62A,0),0), 0x0C,"D")+$a,0) $c = BitOR(BitRotate(BitOR($c + BitOR(BitOR(BitOR(BitAND($d, $a), BitAND((BitNOT($d)), $b)) + $x[$k + 0x6],0) + 0xA8304613,0),0), 0x11,"D")+$d,0) $b = BitOR(BitRotate(BitOR($b + BitOR(BitOR(BitOR(BitAND($c, $d), BitAND((BitNOT($c)), $a)) + $x[$k + 0x7],0) + 0xFD469501,0),0), 0x16,"D")+$c,0) $a = BitOR(BitRotate(BitOR($a + BitOR(BitOR(BitOR(BitAND($b, $c), BitAND((BitNOT($b)), $d)) + $x[$k + 0x8],0) + 0x698098D8,0),0), 0x07,"D")+$b,0) $d = BitOR(BitRotate(BitOR($d + BitOR(BitOR(BitOR(BitAND($a, $b), BitAND((BitNOT($a)), $c)) + $x[$k + 0x9],0) + 0x8B44F7AF,0),0), 0x0C,"D")+$a,0) $c = BitOR(BitRotate(BitOR($c + BitOR(BitOR(BitOR(BitAND($d, $a), BitAND((BitNOT($d)), $b)) + $x[$k + 0xA],0) + 0xFFFF5BB1,0),0), 0x11,"D")+$d,0) $b = BitOR(BitRotate(BitOR($b + BitOR(BitOR(BitOR(BitAND($c, $d), BitAND((BitNOT($c)), $a)) + $x[$k + 0xB],0) + 0x895CD7BE,0),0), 0x16,"D")+$c,0) $a = BitOR(BitRotate(BitOR($a + BitOR(BitOR(BitOR(BitAND($b, $c), BitAND((BitNOT($b)), $d)) + $x[$k + 0xC],0) + 0x6B901122,0),0), 0x07,"D")+$b,0) $d = BitOR(BitRotate(BitOR($d + BitOR(BitOR(BitOR(BitAND($a, $b), BitAND((BitNOT($a)), $c)) + $x[$k + 0xD],0) + 0xFD987193,0),0), 0x0C,"D")+$a,0) $c = BitOR(BitRotate(BitOR($c + BitOR(BitOR(BitOR(BitAND($d, $a), BitAND((BitNOT($d)), $b)) + $x[$k + 0xE],0) + 0xA679438E,0),0), 0x11,"D")+$d,0) $b = BitOR(BitRotate(BitOR($b + BitOR(BitOR(BitOR(BitAND($c, $d), BitAND((BitNOT($c)), $a)) + $x[$k + 0xF],0) + 0x49B40821,0),0), 0x16,"D")+$c,0) $a = BitOR(BitRotate(BitOR($a + BitOR(BitOR(BitOR(BitAND($b, $d), BitAND($c, (BitNOT($d)))) + $x[$k + 0x1],0) + 0xF61E2562,0),0),0x05,"D")+$b,0) $d = BitOR(BitRotate(BitOR($d + BitOR(BitOR(BitOR(BitAND($a, $c), BitAND($b, (BitNOT($c)))) + $x[$k + 0x6],0) + 0xC040B340,0),0),0x09,"D")+$a,0) $c = BitOR(BitRotate(BitOR($c + BitOR(BitOR(BitOR(BitAND($d, $b), BitAND($a, (BitNOT($b)))) + $x[$k + 0xB],0) + 0x265E5A51,0),0),0x0E,"D")+$d,0) $b = BitOR(BitRotate(BitOR($b + BitOR(BitOR(BitOR(BitAND($c, $a), BitAND($d, (BitNOT($a)))) + $x[$k + 0x0],0) + 0xE9B6C7AA,0),0),0x14,"D")+$c,0) $a = BitOR(BitRotate(BitOR($a + BitOR(BitOR(BitOR(BitAND($b, $d), BitAND($c, (BitNOT($d)))) + $x[$k + 0x5],0) + 0xD62F105D,0),0),0x05,"D")+$b,0) $d = BitOR(BitRotate(BitOR($d + BitOR(BitOR(BitOR(BitAND($a, $c), BitAND($b, (BitNOT($c)))) + $x[$k + 0xA],0) + 0x02441453,0),0),0x09,"D")+$a,0) $c = BitOR(BitRotate(BitOR($c + BitOR(BitOR(BitOR(BitAND($d, $b), BitAND($a, (BitNOT($b)))) + $x[$k + 0xF],0) + 0xD8A1E681,0),0),0x0E,"D")+$d,0) $b = BitOR(BitRotate(BitOR($b + BitOR(BitOR(BitOR(BitAND($c, $a), BitAND($d, (BitNOT($a)))) + $x[$k + 0x4],0) + 0xE7D3FBC8,0),0),0x14,"D")+$c,0) $a = BitOR(BitRotate(BitOR($a + BitOR(BitOR(BitOR(BitAND($b, $d), BitAND($c, (BitNOT($d)))) + $x[$k + 0x9],0) + 0x21E1CDE6,0),0),0x05,"D")+$b,0) $d = BitOR(BitRotate(BitOR($d + BitOR(BitOR(BitOR(BitAND($a, $c), BitAND($b, (BitNOT($c)))) + $x[$k + 0xE],0) + 0xC33707D6,0),0),0x09,"D")+$a,0) $c = BitOR(BitRotate(BitOR($c + BitOR(BitOR(BitOR(BitAND($d, $b), BitAND($a, (BitNOT($b)))) + $x[$k + 0x3],0) + 0xF4D50D87,0),0),0x0E,"D")+$d,0) $b = BitOR(BitRotate(BitOR($b + BitOR(BitOR(BitOR(BitAND($c, $a), BitAND($d, (BitNOT($a)))) + $x[$k + 0x8],0) + 0x455A14ED,0),0),0x14,"D")+$c,0) $a = BitOR(BitRotate(BitOR($a + BitOR(BitOR(BitOR(BitAND($b, $d), BitAND($c, (BitNOT($d)))) + $x[$k + 0xD],0) + 0xA9E3E905,0),0),0x05,"D")+$b,0) $d = BitOR(BitRotate(BitOR($d + BitOR(BitOR(BitOR(BitAND($a, $c), BitAND($b, (BitNOT($c)))) + $x[$k + 0x2],0) + 0xFCEFA3F8,0),0),0x09,"D")+$a,0) $c = BitOR(BitRotate(BitOR($c + BitOR(BitOR(BitOR(BitAND($d, $b), BitAND($a, (BitNOT($b)))) + $x[$k + 0x7],0) + 0x676F02D9,0),0),0x0E,"D")+$d,0) $b = BitOR(BitRotate(BitOR($b + BitOR(BitOR(BitOR(BitAND($c, $a), BitAND($d, (BitNOT($a)))) + $x[$k + 0xC],0) + 0x8D2A4C8A,0),0),0x14,"D")+$c,0) $a = BitOR(BitRotate(BitOR($a + BitOR(BitOR(BitXOR($b, $c, $d) + $x[$k + 0x5],0) + 0xFFFA3942,0),0),0x04,"D")+$b,0) $d = BitOR(BitRotate(BitOR($d + BitOR(BitOR(BitXOR($a, $b, $c) + $x[$k + 0x8],0) + 0x8771F681,0),0),0x0B,"D")+$a,0) $c = BitOR(BitRotate(BitOR($c + BitOR(BitOR(BitXOR($d, $a, $b) + $x[$k + 0xB],0) + 0x6D9D6122,0),0),0x10,"D")+$d,0) $b = BitOR(BitRotate(BitOR($b + BitOR(BitOR(BitXOR($c, $d, $a) + $x[$k + 0xE],0) + 0xFDE5380C,0),0),0x17,"D")+$c,0) $a = BitOR(BitRotate(BitOR($a + BitOR(BitOR(BitXOR($b, $c, $d) + $x[$k + 0x1],0) + 0xA4BEEA44,0),0),0x04,"D")+$b,0) $d = BitOR(BitRotate(BitOR($d + BitOR(BitOR(BitXOR($a, $b, $c) + $x[$k + 0x4],0) + 0x4BDECFA9,0),0),0x0B,"D")+$a,0) $c = BitOR(BitRotate(BitOR($c + BitOR(BitOR(BitXOR($d, $a, $b) + $x[$k + 0x7],0) + 0xF6BB4B60,0),0),0x10,"D")+$d,0) $b = BitOR(BitRotate(BitOR($b + BitOR(BitOR(BitXOR($c, $d, $a) + $x[$k + 0xA],0) + 0xBEBFBC70,0),0),0x17,"D")+$c,0) $a = BitOR(BitRotate(BitOR($a + BitOR(BitOR(BitXOR($b, $c, $d) + $x[$k + 0xD],0) + 0x289B7EC6,0),0),0x04,"D")+$b,0) $d = BitOR(BitRotate(BitOR($d + BitOR(BitOR(BitXOR($a, $b, $c) + $x[$k + 0x0],0) + 0xEAA127FA,0),0),0x0B,"D")+$a,0) $c = BitOR(BitRotate(BitOR($c + BitOR(BitOR(BitXOR($d, $a, $b) + $x[$k + 0x3],0) + 0xD4EF3085,0),0),0x10,"D")+$d,0) $b = BitOR(BitRotate(BitOR($b + BitOR(BitOR(BitXOR($c, $d, $a) + $x[$k + 0x6],0) + 0x04881D05,0),0),0x17,"D")+$c,0) $a = BitOR(BitRotate(BitOR($a + BitOR(BitOR(BitXOR($b, $c, $d) + $x[$k + 0x9],0) + 0xD9D4D039,0),0),0x04,"D")+$b,0) $d = BitOR(BitRotate(BitOR($d + BitOR(BitOR(BitXOR($a, $b, $c) + $x[$k + 0xC],0) + 0xE6DB99E5,0),0),0x0B,"D")+$a,0) $c = BitOR(BitRotate(BitOR($c + BitOR(BitOR(BitXOR($d, $a, $b) + $x[$k + 0xF],0) + 0x1FA27CF8,0),0),0x10,"D")+$d,0) $b = BitOR(BitRotate(BitOR($b + BitOR(BitOR(BitXOR($c, $d, $a) + $x[$k + 0x2],0) + 0xC4AC5665,0),0),0x17,"D")+$c,0) $a = BitOR(BitRotate(BitOR($a + BitOR(BitOR(BitXOR($c, BitOR($b, (BitNOT($d)))) + $x[$k + 0x0],0) + 0xF4292244,0),0),0x06,"D")+$b,0) $d = BitOR(BitRotate(BitOR($d + BitOR(BitOR(BitXOR($b, BitOR($a, (BitNOT($c)))) + $x[$k + 0x7],0) + 0x432AFF97,0),0),0x0A,"D")+$a,0) $c = BitOR(BitRotate(BitOR($c + BitOR(BitOR(BitXOR($a, BitOR($d, (BitNOT($b)))) + $x[$k + 0xE],0) + 0xAB9423A7,0),0),0x0F,"D")+$d,0) $b = BitOR(BitRotate(BitOR($b + BitOR(BitOR(BitXOR($d, BitOR($c, (BitNOT($a)))) + $x[$k + 0x5],0) + 0xFC93A039,0),0),0x15,"D")+$c,0) $a = BitOR(BitRotate(BitOR($a + BitOR(BitOR(BitXOR($c, BitOR($b, (BitNOT($d)))) + $x[$k + 0xC],0) + 0x655B59C3,0),0),0x06,"D")+$b,0) $d = BitOR(BitRotate(BitOR($d + BitOR(BitOR(BitXOR($b, BitOR($a, (BitNOT($c)))) + $x[$k + 0x3],0) + 0x8F0CCC92,0),0),0x0A,"D")+$a,0) $c = BitOR(BitRotate(BitOR($c + BitOR(BitOR(BitXOR($a, BitOR($d, (BitNOT($b)))) + $x[$k + 0xA],0) + 0xFFEFF47D,0),0),0x0F,"D")+$d,0) $b = BitOR(BitRotate(BitOR($b + BitOR(BitOR(BitXOR($d, BitOR($c, (BitNOT($a)))) + $x[$k + 0x1],0) + 0x85845DD1,0),0),0x15,"D")+$c,0) $a = BitOR(BitRotate(BitOR($a + BitOR(BitOR(BitXOR($c, BitOR($b, (BitNOT($d)))) + $x[$k + 0x8],0) + 0x6FA87E4F,0),0),0x06,"D")+$b,0) $d = BitOR(BitRotate(BitOR($d + BitOR(BitOR(BitXOR($b, BitOR($a, (BitNOT($c)))) + $x[$k + 0xF],0) + 0xFE2CE6E0,0),0),0x0A,"D")+$a,0) $c = BitOR(BitRotate(BitOR($c + BitOR(BitOR(BitXOR($a, BitOR($d, (BitNOT($b)))) + $x[$k + 0x6],0) + 0xA3014314,0),0),0x0F,"D")+$d,0) $b = BitOR(BitRotate(BitOR($b + BitOR(BitOR(BitXOR($d, BitOR($c, (BitNOT($a)))) + $x[$k + 0xD],0) + 0x4E0811A1,0),0),0x15,"D")+$c,0) $a = BitOR(BitRotate(BitOR($a + BitOR(BitOR(BitXOR($c, BitOR($b, (BitNOT($d)))) + $x[$k + 0x4],0) + 0xF7537E82,0),0),0x06,"D")+$b,0) $d = BitOR(BitRotate(BitOR($d + BitOR(BitOR(BitXOR($b, BitOR($a, (BitNOT($c)))) + $x[$k + 0xB],0) + 0xBD3AF235,0),0),0x0A,"D")+$a,0) $c = BitOR(BitRotate(BitOR($c + BitOR(BitOR(BitXOR($a, BitOR($d, (BitNOT($b)))) + $x[$k + 0x2],0) + 0x2AD7D2BB,0),0),0x0F,"D")+$d,0) $b = BitOR(BitRotate(BitOR($b + BitOR(BitOR(BitXOR($d, BitOR($c, (BitNOT($a)))) + $x[$k + 0x9],0) + 0xEB86D391,0),0),0x15,"D")+$c,0) $a = BitOR($a + $AA,0) $b = BitOR($b + $BB,0) $c = BitOR($c + $CC,0) $d = BitOR($d + $DD,0) Next Return StringLower(StringMid(Hex($a),7,2) & StringMid(Hex($a),5,2) & StringMid(Hex($a),3,2) & StringMid(Hex($a),1,2) & _ StringMid(Hex($b),7,2) & StringMid(Hex($b),5,2) & StringMid(Hex($b),3,2) & StringMid(Hex($b),1,2) & _ StringMid(Hex($c),7,2) & StringMid(Hex($c),5,2) & StringMid(Hex($c),3,2) & StringMid(Hex($c),1,2) & _ StringMid(Hex($d),7,2) & StringMid(Hex($d),5,2) & StringMid(Hex($d),3,2) & StringMid(Hex($d),1,2)) EndFunc ;==>MD5 Edited March 25, 2008 by jlorenz1 Johannes LorenzBensheim, Germanyjlorenz1@web.de[post="12602"]Highlightning AutoIt Syntax in Notepad++ - Just copy in your Profile/application data/notepad++[/post] Link to comment Share on other sites More sharing options...
Siao Posted March 25, 2008 Share Posted March 25, 2008 (edited) Just use this (or some other) command line tool, it's pretty small ~36kb:http://ed2k-tools.sourceforge.net/ed2k_hash.shtmlIf you're inclined to implement the algo in Autoit and have the time to burn, there's source code available for download too. Although IMO it'd be pretty silly and pointless to do so if you're thinking of actually using that. The only purpose of all these sort/crypt/etc algo conversions to Autoit you can find around here is as a means of learning for the one who writes them. Performance-wise they all suck pretty bad when attempted to use on anything of decent scale.And I imagine you'll be hashing pretty big files... Edited March 25, 2008 by Siao "be smart, drink your wine" Link to comment Share on other sites More sharing options...
jlorenz1 Posted March 26, 2008 Author Share Posted March 26, 2008 Five Stars for your help, I've just tested in the command line and it's works perfekt. ;-) Greetings from Germany Johannes Johannes LorenzBensheim, Germanyjlorenz1@web.de[post="12602"]Highlightning AutoIt Syntax in Notepad++ - Just copy in your Profile/application data/notepad++[/post] Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now