| Lahace |
| | Signori e Signore! ecco a voi... *Rullo di tamburi* Magic Crypter!
questo programmino permette di codificare e decodificare XXTEA , RC4 e Base64 l'md5 e sha1 verranno aggiunti in seguito due cose da notare 1- è in inglese perchè era destinato ad un forum inglese 2- manca di grafica, sarebbe forse più corretto dire che manca la voglia di farla xD Aggiornamenti: -Postata v 1.2 comprende SHA1 (da risolvere) e MD5 magic Crypt.au3: CODICE #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #include "Crp.au3" #include <File.au3> If Not FileExists(@ScriptDir & "opt.ini") Then _FileCreate(@ScriptDir & "opt.ini") EndIf $Form1 = GUICreate("Magic Crypt 1.2", 367, 566, 341, 124) $Edit1 = GUICtrlCreateEdit("", 5, 45, 361, 236) $Edit2 = GUICtrlCreateEdit("", 5, 309, 361, 236) $Button1 = GUICtrlCreateButton("Decrypt", 170, 285, 81, 21, 0) $Button2 = GUICtrlCreateButton("Encrypt", 255, 285, 76, 21, 0) $Input1 = GUICtrlCreateInput("", 145, 20, 221, 21) $method = "none" $Label1 = GUICtrlCreateLabel("Key: ", 105, 20, 28, 17) $Label2 = GUICtrlCreateLabel("Crypting/Decryping method: ", 105, 0, 139, 17) $Label3 = GUICtrlCreateLabel("Undefinied", 250, 0, 73, 17) If IniRead(@ScriptDir & "opt.ini" , "start" , "DefaultEncr" , "1") = 1 Then _SetBase64() ElseIf IniRead(@ScriptDir & "opt.ini" , "start" , "DefaultEncr" , "1") = 2 Then _setXXTEA() ElseIf IniRead(@ScriptDir & "opt.ini" , "start" , "DefaultEncr" , "1") = 3 Then _setRC4() ElseIf IniRead(@ScriptDir & "opt.ini" , "start" , "DefaultEncr" , "1") = 4 Then _setSHA1() ElseIf IniRead(@ScriptDir & "opt.ini" , "start" , "DefaultEncr" , "1") = 5 Then _setMD5() EndIf $MenuItem5 = GUICtrlCreateMenu("File") $MenuItem7 = GUICtrlCreateMenuItem("Close", $MenuItem5) $MenuItem8 = GUICtrlCreateMenuItem("Credits", $MenuItem5) $MenuItem1 = GUICtrlCreateMenu("Encypt/Decrypt") $MenuItem2 = GUICtrlCreateMenuItem("Base64", $MenuItem1) $MenuItem4 = GUICtrlCreateMenuItem("XXTEA", $MenuItem1) $MenuItem3 = GUICtrlCreateMenuItem("RC4", $MenuItem1) $MenuItem9 = GUICtrlCreateMenuItem("SHA1", $MenuItem1) $MenuItem10 = GUICtrlCreateMenuItem("MD5", $MenuItem1) GUISetState(@SW_SHOW)
While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $MenuItem7 Exit Case $MenuItem2 _SetBase64() Case $MenuItem4 _SetXXTEA() Case $MenuItem3 _SetRC4() Case $MenuItem9 _setSHA1() Case $MenuItem10 _setMD5() Case $Button1 If GUICtrlRead($Edit2) <> "" Then ;decripta $mtd = _GetMethod() $read = GUICtrlRead($Edit2) If $mtd = "RC4" Then $key = GUICtrlRead($Input1) $rc4 = _RC4($read , $key) GUICtrlSetData($Edit1 , BinaryToString($rc4)) ElseIf $mtd = "XXTEA" Then $key = GUICtrlRead($Input1) $xxtea = _XXTEA_Decrypt($read , $key) GUICtrlSetData($Edit1 , BinaryToString($xxtea)) ElseIf $mtd = "Base64" Then $base64 = _Base64Decode($read) GUICtrlSetData($Edit1 , BinaryToString($base64)) EndIf EndIf Case $Button2 If GUICtrlRead($edit1) <> "" Then ;cripta $mtd = _GetMethod() $read = GUICtrlRead($Edit1) If $mtd = "RC4" Then $key = GUICtrlRead($Input1) $rc4 = _RC4($read , $key) GUICtrlSetData($Edit2 , BinaryToString($rc4)) ElseIf $mtd = "XXTEA" Then $key = GUICtrlRead($Input1) $xxtea = _XXTEA_Encrypt($read , $key) GUICtrlSetData($Edit2 , BinaryToString($xxtea)) ElseIf $mtd = "Base64" Then $base64 = _Base64Encode($read) GUICtrlSetData($Edit2 , $base64) ElseIf $mtd = "SHA1" Then GUICtrlSetData($Edit2 , BinaryToString(_SHA1($read))) ElseIf $mtd = "MD5" Then GUICtrlSetData($Edit2 , StringLower(BinaryToString(_MD5($read)))) EndIf EndIf EndSwitch WEnd
Func _SetBase64() $method = "Base64" IniWrite("opt.ini" , "start" , "DefaultEncr" , "1") GUICtrlSetData($label3 , "Base64") GUICtrlSetState($label1 , 128) GUICtrlSetState($Input1 , 128) GUICtrlSetState($Button1 , 64) EndFunc Func _SetXXTEA() $method = "XXTEA" IniWrite("opt.ini" , "start" , "DefaultEncr" , "2") GUICtrlSetData($label3 , "XXTEA") GUICtrlSetState($label1 , 64) GUICtrlSetState($Input1 , 64) GUICtrlSetState($Button1 , 64) EndFunc Func _SetRC4() $method = "RC4" IniWrite("opt.ini" , "start" , "DefaultEncr" , "3") GUICtrlSetData($label3 , "RC4") GUICtrlSetState($label1 , 64) GUICtrlSetState($Input1 , 64) GUICtrlSetState($Button1 , 64) EndFunc Func _setSHA1() $method = "SHA1" IniWrite("opt.ini" , "start" , "DefaultEncr" , "4") GUICtrlSetData($label3 , "SHA1") GUICtrlSetState($Button1 , 128) GUICtrlSetState($label1 , 128) GUICtrlSetState($Input1 , 128) EndFunc Func _setMD5() $method = "MD5" IniWrite("opt.ini" , "start" , "DefaultEncr" , "5") GUICtrlSetData($label3 , "MD5") GUICtrlSetState($Button1 , 128) GUICtrlSetState($label1 , 128) GUICtrlSetState($Input1 , 128) EndFunc Func _GetMethod() Return $method EndFunc EndFunc Crp.au3(include): CODICE Func _XXTEA_Encrypt($Data, $Key) Func _XXTEA_Encrypt($Data, $Key) $Data = Binary($Data) Local $DataLen = BinaryLen($Data) If $DataLen = 0 Then Return "" ElseIf $DataLen < 8 Then $DataLen = 8 EndIf Local $Opcode = '0x83EC14B83400000099538B5C2420558B6C242056578B7C9DFCF7FB89C683C606C74424180000000085F68D76FF0F8EEA000000896C24288D4BFF8D549D00894C2410895424148974242081442418B979379E8B4C2418C1E90281E103000000894C241C31F6397424107E568B5424288BCF8B6CB204C1E9058D14AD0000000033CA8BD58BC7C1EA03C1E00433D003CA8B5424188BDE81E303000000335C241C8B4424308B1C9833D533DF03D333CA8B542428010CB28B0CB2463974241089CF7FAA8B5424288BCF8B2AC1E9058D14AD0000000033CA8BD58BC7C1EA03C1E00433D003CA8B5424188BDE81E303000000335C241C8B4424308B1C9833D533DF03D3FF4C242033CA8B542414014AFC8B4AFC8B54242089CF420F8F2DFFFFFF5F31C05E5D5B83C414C21000' Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]") DllStructSetData($CodeBuffer, 1, $Opcode)
Local $V = DllStructCreate("byte[" & Ceiling($DataLen / 4) * 4 & "]") DllStructSetData($V, 1, $Data)
Local $K = DllStructCreate("byte[16]") DllStructSetData($K, 1, $Key)
DllCall("user32.dll", "none", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _ "ptr", DllStructGetPtr($V), _ "int", Ceiling($DataLen / 4), _ "ptr", DllStructGetPtr($K), _ "int", 0)
Local $Ret = DllStructGetData($V, 1) $CodeBuffer = 0 $V = 0 $K = 0 Return $Ret EndFunc
Func _XXTEA_Decrypt($Data, $Key) $Data = Binary($Data) Local $DataLen = BinaryLen($Data) If $DataLen = 0 Then Return ""
Local $Opcode = '0x83EC10B83400000099538B5C241C55568B742420578B3EF7FB69D0B979379E81C256DA4CB5895424180F84DD000000897424248D4BFF8D149E894C2410895424148B4C2418C1E90281E103000000894C241C8B742410837C2410007E528B5424248B6CB2FC8BCD8BD7C1E905C1E20233CA8BD78BC5C1EA03C1E00433D003CA8B5424188BDE81E3030000008B44242C33D7335C241C8B1C9833DD03D333CA8B542424290CB28B0CB24E89CF85F67FAE8B5424148B6AFC8BCD8BD7C1E905C1E20233CA8BD78BC5C1EA03C1E00433D003CA8B5424188BDE81E3030000008B44242C33D7335C241C8B1C9833DD03D333CA8B542424290A8B0A89CF814424184786C861837C2418000F8535FFFFFF5F31C05E5D5B83C410C21000' Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]") DllStructSetData($CodeBuffer, 1, $Opcode)
Local $V = DllStructCreate("byte[" & Ceiling($DataLen / 4) * 4 & "]") DllStructSetData($V, 1, $Data)
Local $K = DllStructCreate("byte[16]") DllStructSetData($K, 1, $Key)
DllCall("user32.dll", "none", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _ "ptr", DllStructGetPtr($V), _ "int", Ceiling($DataLen / 4), _ "ptr", DllStructGetPtr($K), _ "int", 0)
Local $Ret = DllStructGetData($V, 1) $CodeBuffer = 0 $V = 0 $K = 0 Return $Ret EndFunc
Func _Base64Decode($Data) Local $Opcode = "0xC81000005356578365F800E8500000003EFFFFFF3F3435363738393A3B3C3DFFFFFF00FFFFFF000102030405060708090A0B0C0D0E0F10111213141516171819FFFFFFFFFFFF1A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132338F45F08B7D0C8B5D0831D2E9910000008365FC00837DFC047D548A034384C0750383EA033C3D75094A803B3D75014AB00084C0751A837DFC047D0D8B75FCC64435F400FF45FCEBED6A018F45F8EB1F3C2B72193C7A77150FB6F083EE2B0375F08A068B75FC884435F4FF45FCEBA68D75F4668B06C0E002C0EC0408E08807668B4601C0E004C0EC0208E08847018A4602C0E00624C00A46038847028D7F038D5203837DF8000F8465FFFFFF89D05F5E5BC9C21000" Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]") DllStructSetData($CodeBuffer, 1, $Opcode)
Local $Ouput = DllStructCreate("byte[" & BinaryLen($Data) & "]") Local $Ret = DllCall("user32.dll", "int", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _ "str", $Data, _ "ptr", DllStructGetPtr($Ouput), _ "int", 0, _ "int", 0)
Return BinaryMid(DllStructGetData($Ouput, 1), 1, $Ret[0]) EndFunc
Func _Base64Encode($Data, $LineBreak = 76) Local $Opcode = "0x5589E5FF7514535657E8410000004142434445464748494A4B4C4D4E4F505152535455565758595A6162636465666768696A6B6C6D6E6F707172737475767778797A303132333435363738392B2F005A8B5D088B7D108B4D0CE98F0000000FB633C1EE0201D68A06880731C083F901760C0FB6430125F0000000C1E8040FB63383E603C1E60409C601D68A0688470183F90176210FB6430225C0000000C1E8060FB6730183E60FC1E60209C601D68A06884702EB04C647023D83F90276100FB6730283E63F01D68A06884703EB04C647033D8D5B038D7F0483E903836DFC04750C8B45148945FC66B80D0A66AB85C90F8F69FFFFFFC607005F5E5BC9C21000"
Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]") DllStructSetData($CodeBuffer, 1, $Opcode)
$Data = Binary($Data) Local $Input = DllStructCreate("byte[" & BinaryLen($Data) & "]") DllStructSetData($Input, 1, $Data)
$LineBreak = Floor($LineBreak / 4) * 4 Local $OputputSize = Ceiling(BinaryLen($Data) * 4 / 3) $OputputSize = $OputputSize + Ceiling($OputputSize / $LineBreak) * 2 + 4
Local $Ouput = DllStructCreate("char[" & $OputputSize & "]") DllCall("user32.dll", "none", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _ "ptr", DllStructGetPtr($Input), _ "int", BinaryLen($Data), _ "ptr", DllStructGetPtr($Ouput), _ "uint", $LineBreak) Return DllStructGetData($Ouput, 1) EndFunc
Func _RC4($Data, $Key) Local $Opcode = "0xC81001006A006A005356578B551031C989C84989D7F2AE484829C88945F085C00F84DC000000B90001000088C82C0188840DEFFEFFFFE2F38365F4008365FC00817DFC000100007D478B45FC31D2F775F0920345100FB6008B4DFC0FB68C0DF0FEFFFF01C80345F425FF0000008945F48B75FC8A8435F0FEFFFF8B7DF486843DF0FEFFFF888435F0FEFFFFFF45FCEBB08D9DF0FEFFFF31FF89FA39550C76638B85ECFEFFFF4025FF0000008985ECFEFFFF89D80385ECFEFFFF0FB6000385E8FEFFFF25FF0000008985E8FEFFFF89DE03B5ECFEFFFF8A0689DF03BDE8FEFFFF860788060FB60E0FB60701C181E1FF0000008A840DF0FEFFFF8B750801D6300642EB985F5E5BC9C21000" Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($Opcode) & "]") DllStructSetData($CodeBuffer, 1, $Opcode)
Local $Buffer = DllStructCreate("byte[" & BinaryLen($Data) & "]") DllStructSetData($Buffer, 1, $Data)
DllCall("user32.dll", "none", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _ "ptr", DllStructGetPtr($Buffer), _ "int", BinaryLen($Data), _ "str", $Key, _ "int", 0)
Local $Ret = DllStructGetData($Buffer, 1) $Buffer = 0 $CodeBuffer = 0 Return $Ret EndFunc
Global $_SHA1Opcode = '0xC86800005356576A006A006A008D459850E829000000FF7514FF750CFF75088D459850E88A0000006A006A008D459850FF7510E8490000005F5E5BC9C210005589E5538B5D08836314008363180083635C00C70301234567C7430489ABCDEFC74308FEDCBA98C7430C76543210C74310F0E1D2C383636000836364005B5DC210005589E55657FF750CE8850200008B7D088B750C6A0559A58A47FF8647FC8847FF8A47FE8647FD8847FEE2EB5F5E5DC210005589E55356578B5D08837D10007502EB59837B60007506837B640074076A018F4364EB468B4D108B7D0CEB3449518A078B735C8844331CFF435C83431408837B1400750EFF4318837B180075056A018F4364837B5C40750653E813000000475985C97406837B640074C25F5E5B5DC21000C84801005356578B5D086A10598D51FF89D7C1E7020FB6443B1CC1E018898495BCFEFFFF0FB6443B1DC1E010098495BCFEFFFF0FB6443B1EC1E008098495BCFEFFFF0FB6443B1F098495BCFEFFFFE2BD6A105A83FA5073288B8495B0FEFFFF3384959CFEFFFF33849584FEFFFF3384957CFEFFFFD1C0898495BCFEFFFF42EBD38B4D088B318B59048B51088B790C8B41108985B8FEFFFF8365FC00837DFC147D3C89D131F921D931F989F0C1C00501C80385B8FEFFFF8B4DFC03848DBCFEFFFF059979825A5089BDB8FEFFFF89D789D8C1C01E89C289F35EFF45FCEBBE6A148F45FC837DFC287D3A89D931D131F989F0C1C00501C80385B8FEFFFF8B4DFC03848DBCFEFFFF05A1EBD96E5089BDB8FEFFFF89D789D8C1C01E89C289F35EFF45FCEBC06A288F45FC837DFC3C7D4689D821F85089D021F889D921D109C15809C189F0C1C00501C80385B8FEFFFF8B4DFC03848DBCFEFFFF05DCBC1B8F5089BDB8FEFFFF89D789D8C1C01E89C289F35EFF45FCEBB46A3C8F45FC837DFC507D3A89D931D131F989F0C1C00501C80385B8FEFFFF8B4DFC03848DBCFEFFFF05D6C162CA5089BDB8FEFFFF89D789D8C1C01E89C289F35EFF45FCEBC08B4D088B0101F089018B410401D88941048B410801D08941088B410C01F889410C8B41100385B8FEFFFF89411083615C005F5E5BC9C204005589E55356578B5D08837B6400740431C0EB14837B6000750B53E80F0000006A018F436031C0405F5E5B5DC204005589E553578B5D088B7B5C83FF37762EC6443B1C8047EB06C6443B1C004783FF4072F5897B5C53E8B6FDFFFF8B7B5CEB06C6443B1C004783FF3872F5EB13C6443B1C8047EB06C6443B1C004783FF3872F5897B5C8B4318C1E81825FF0000008843548B4318C1E81025FF0000008843558B4318C1E80825FF0000008843568B431825FF0000008843578B4314C1E81825FF0000008843588B4314C1E81025FF0000008843598B4314C1E80825FF00000088435A8B431425FF00000088435B53E81EFDFFFF5F5B5DC20400'
Func _SHA1($Data) Local $CodeBuffer = DllStructCreate("byte[" & BinaryLen($_SHA1Opcode) & "]") DllStructSetData($CodeBuffer, 1, $_SHA1Opcode)
Local $Input = DllStructCreate("byte[" & BinaryLen($Data) & "]") DllStructSetData($Input, 1, $Data)
Local $Digest = DllStructCreate("byte[20]")
DllCall("user32.dll", "none", "CallWindowProc", "ptr", DllStructGetPtr($CodeBuffer), _ "ptr", DllStructGetPtr($Input), _ "int", BinaryLen($Data), _ "ptr", DllStructGetPtr($Digest), _ "int", 0)
Local $Ret = DllStructGetData($Digest, 1) $Input = 0 $Digest = 0 $CodeBuffer = 0 Return $Ret EndFunc
Func _MD5($string)
$string = String($string)
Local $bitLen, $bytes, $bytesLen, $blockN, $i
Local $A, $B, $C, $D, $X[16], $Am, $Bm, $Cm, $Dm, $T[65]
$bytes = StringToBinary($string)
$bitLen = 8 * BinaryLen($bytes)
$bytes += BinaryMid(Binary(0x80), 1, 1)
$bytesLen = BinaryLen($bytes)
While Mod($bytesLen + 8, 64) <> 0
$bytes += BinaryMid(Binary(0x00), 1, 1)
$bytesLen = BinaryLen($bytes)
WEnd
$bytes += BinaryMid(Binary($bitLen) + Binary(0), 1, 8)
$bytesLen = BinaryLen($bytes)
$A = 0x67452301
$B = 0xEFCDAB89
$C = 0x98BADCFE
$D = 0x10325476
For $i = 0 To 64 Step 1
$T[$i] = 4294967296 * Abs(Sin($i))
Next
$blockN = 0
Do
For $i = 0 To 15 Step 1
$X[$i] = BinaryMid($bytes, $blockN * 64 + 4 + $i * 4, 1) & BinaryMid($bytes, $blockN * 64 + 3 + $i * 4, 1)& BinaryMid($bytes, $blockN * 64 + 2 + $i * 4, 1) & BinaryMid($bytes, $blockN * 64 + 1 + $i * 4, 1)
Next
$Am = $A
$Bm = $B
$Cm = $C
$Dm = $D
;Stage 1
$A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[0])) + $T[1])) + BitOR(BitAND($B, $C), BitAND(BitNOT($B), $D)))) + $A)), 7, "D") + $B))
$D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[1])) + $T[2])) + BitOR(BitAND($A, $B), BitAND(BitNOT($A), $C)))) + $D)), 12, "D") + $A))
$C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[2])) + $T[3])) + BitOR(BitAND($D, $A), BitAND(BitNOT($D), $B)))) + $C)), 17, "D") + $D))
$B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[3])) + $T[4])) + BitOR(BitAND($C, $D), BitAND(BitNOT($C), $A)))) + $B)), 22, "D") + $C))
$A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[4])) + $T[5])) + BitOR(BitAND($B, $C), BitAND(BitNOT($B), $D)))) + $A)), 7, "D") + $B))
$D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[5])) + $T[6])) + BitOR(BitAND($A, $B), BitAND(BitNOT($A), $C)))) + $D)), 12, "D") + $A))
$C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[6])) + $T[7])) + BitOR(BitAND($D, $A), BitAND(BitNOT($D), $B)))) + $C)), 17, "D") + $D))
$B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[7])) + $T[8])) + BitOR(BitAND($C, $D), BitAND(BitNOT($C), $A)))) + $B)), 22, "D") + $C))
$A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[8])) + $T[9])) + BitOR(BitAND($B, $C), BitAND(BitNOT($B), $D)))) + $A)), 7, "D") + $B))
$D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[9])) + $T[10])) + BitOR(BitAND($A, $B), BitAND(BitNOT($A), $C)))) + $D)), 12, "D") + $A))
$C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[10])) + $T[11])) + BitOR(BitAND($D, $A), BitAND(BitNOT($D), $B)))) + $C)), 17, "D") + $D))
$B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[11])) + $T[12])) + BitOR(BitAND($C, $D), BitAND(BitNOT($C), $A)))) + $B)), 22, "D") + $C))
$A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[12])) + $T[13])) + BitOR(BitAND($B, $C), BitAND(BitNOT($B), $D)))) + $A)), 7, "D") + $B))
$D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[13])) + $T[14])) + BitOR(BitAND($A, $B), BitAND(BitNOT($A), $C)))) + $D)), 12, "D") + $A))
$C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[14])) + $T[15])) + BitOR(BitAND($D, $A), BitAND(BitNOT($D), $B)))) + $C)), 17, "D") + $D))
$B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[15])) + $T[16])) + BitOR(BitAND($C, $D), BitAND(BitNOT($C), $A)))) + $B)), 22, "D") + $C))
;Stage 2
$A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[1])) + $T[17])) + BitOR(BitAND($B, $D), BitAND($C, BitNOT($D))))) + $A)), 5, "D") + $B))
$D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[6])) + $T[18])) + BitOR(BitAND($A, $C), BitAND($B, BitNOT($C))))) + $D)), 9, "D") + $A))
$C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[11])) + $T[19])) + BitOR(BitAND($D, $B), BitAND($A, BitNOT($B))))) + $C)), 14, "D") + $D))
$B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[0])) + $T[20])) + BitOR(BitAND($C, $A), BitAND($D, BitNOT($A))))) + $B)), 20, "D") + $C))
$A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[5])) + $T[21])) + BitOR(BitAND($B, $D), BitAND($C, BitNOT($D))))) + $A)), 5, "D") + $B))
$D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[10])) + $T[22])) + BitOR(BitAND($A, $C), BitAND($B, BitNOT($C))))) + $D)), 9, "D") + $A))
$C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[15])) + $T[23])) + BitOR(BitAND($D, $B), BitAND($A, BitNOT($B))))) + $C)), 14, "D") + $D))
$B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[4])) + $T[24])) + BitOR(BitAND($C, $A), BitAND($D, BitNOT($A))))) + $B)), 20, "D") + $C))
$A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[9])) + $T[25])) + BitOR(BitAND($B, $D), BitAND($C, BitNOT($D))))) + $A)), 5, "D") + $B))
$D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[14])) + $T[26])) + BitOR(BitAND($A, $C), BitAND($B, BitNOT($C))))) + $D)), 9, "D") + $A))
$C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[3])) + $T[27])) + BitOR(BitAND($D, $B), BitAND($A, BitNOT($B))))) + $C)), 14, "D") + $D))
$B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[8])) + $T[28])) + BitOR(BitAND($C, $A), BitAND($D, BitNOT($A))))) + $B)), 20, "D") + $C))
$A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[13])) + $T[29])) + BitOR(BitAND($B, $D), BitAND($C, BitNOT($D))))) + $A)), 5, "D") + $B))
$D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[2])) + $T[30])) + BitOR(BitAND($A, $C), BitAND($B, BitNOT($C))))) + $D)), 9, "D") + $A))
$C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[7])) + $T[31])) + BitOR(BitAND($D, $B), BitAND($A, BitNOT($B))))) + $C)), 14, "D") + $D))
$B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[12])) + $T[32])) + BitOR(BitAND($C, $A), BitAND($D, BitNOT($A))))) + $B)), 20, "D") + $C))
;Stage 3
$A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[5])) + $T[33])) + BitXOR($B, $C, $D))) + $A)), 4, "D") + $B))
$D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[8])) + $T[34])) + BitXOR($A, $B, $C))) + $D)), 11, "D") + $A))
$C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[11])) + $T[35])) + BitXOR($D, $A, $B))) + $C)), 16, "D") + $D))
$B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[14])) + $T[36])) + BitXOR($C, $D, $A))) + $B)), 23, "D") + $C))
$A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[1])) + $T[37])) + BitXOR($B, $C, $D))) + $A)), 4, "D") + $B))
$D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[4])) + $T[38])) + BitXOR($A, $B, $C))) + $D)), 11, "D") + $A))
$C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[7])) + $T[39])) + BitXOR($D, $A, $B))) + $C)), 16, "D") + $D))
$B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[10])) + $T[40])) + BitXOR($C, $D, $A))) + $B)), 23, "D") + $C))
$A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[13])) + $T[41])) + BitXOR($B, $C, $D))) + $A)), 4, "D") + $B))
$D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[0])) + $T[42])) + BitXOR($A, $B, $C))) + $D)), 11, "D") + $A))
$C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[3])) + $T[43])) + BitXOR($D, $A, $B))) + $C)), 16, "D") + $D))
$B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[6])) + $T[44])) + BitXOR($C, $D, $A))) + $B)), 23, "D") + $C))
$A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[9])) + $T[45])) + BitXOR($B, $C, $D))) + $A)), 4, "D") + $B))
$D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[12])) + $T[46])) + BitXOR($A, $B, $C))) + $D)), 11, "D") + $A))
$C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[15])) + $T[47])) + BitXOR($D, $A, $B))) + $C)), 16, "D") + $D))
$B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[2])) + $T[48])) + BitXOR($C, $D, $A))) + $B)), 23, "D") + $C))
;Stage 4
$A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[0])) + $T[49])) + BitXOR($C, BitOR($B, BitNOT($D))))) + $A)), 6, "D") + $B))
$D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[7])) + $T[50])) + BitXOR($B, BitOR($A, BitNOT($C))))) + $D)), 10, "D") + $A))
$C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[14])) + $T[51])) + BitXOR($A, BitOR($D, BitNOT($B))))) + $C)), 15, "D") + $D))
$B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[5])) + $T[52])) + BitXOR($D, BitOR($C, BitNOT($A))))) + $B)), 21, "D") + $C))
$A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[12])) + $T[53])) + BitXOR($C, BitOR($B, BitNOT($D))))) + $A)), 6, "D") + $B))
$D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[3])) + $T[54])) + BitXOR($B, BitOR($A, BitNOT($C))))) + $D)), 10, "D") + $A))
$C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[10])) + $T[55])) + BitXOR($A, BitOR($D, BitNOT($B))))) + $C)), 15, "D") + $D))
$B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[1])) + $T[56])) + BitXOR($D, BitOR($C, BitNOT($A))))) + $B)), 21, "D") + $C))
$A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[8])) + $T[57])) + BitXOR($C, BitOR($B, BitNOT($D))))) + $A)), 6, "D") + $B))
$D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[15])) + $T[58])) + BitXOR($B, BitOR($A, BitNOT($C))))) + $D)), 10, "D") + $A))
$C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[6])) + $T[59])) + BitXOR($A, BitOR($D, BitNOT($B))))) + $C)), 15, "D") + $D))
$B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[13])) + $T[60])) + BitXOR($D, BitOR($C, BitNOT($A))))) + $B)), 21, "D") + $C))
$A = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[4])) + $T[61])) + BitXOR($C, BitOR($B, BitNOT($D))))) + $A)), 6, "D") + $B))
$D = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[11])) + $T[62])) + BitXOR($B, BitOR($A, BitNOT($C))))) + $D)), 10, "D") + $A))
$C = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[2])) + $T[63])) + BitXOR($A, BitOR($D, BitNOT($B))))) + $C)), 15, "D") + $D))
$B = Dec(Hex(BitRotate(Dec(Hex(Dec(Hex(Dec(Hex(Dec(Hex($X[9])) + $T[64])) + BitXOR($D, BitOR($C, BitNOT($A))))) + $B)), 21, "D") + $C))
$A = Dec(Hex($A + $Am))
$B = Dec(Hex($B + $Bm))
$C = Dec(Hex($C + $Cm))
$D = Dec(Hex($D + $Dm))
$blockN += 1
Until $blockN * 64 >= $bytesLen
Return Hex(Binary($A) + Binary($B) + Binary($C) + Binary($D))
EndFunc EndFunc Edited by Lahace - 24/1/2010, 17:31
| | |
| |
|