; Needs AutoHotKey Version 1.0.46.00 or later #SingleInstance Force #NoEnv SetBatchLines -1 Process Priority,,High ; Run faster RC4Pass = pass FileRead, RC4Data, html.txt RC4Enc := RC4txt2hex(RC4Data,RC4Pass) FileAppend, %RC4Enc%, htmlenc.txt RC4Dec := RC4hex2txt(RC4Enc,RC4Pass) FileAppend, %RC4Dec%, htmldec.txt MsgBox %RC4Data%`n`nEncrypted 5-times with pass:`n`n%RC4Pass%`n`nto`n`n%RC4Enc%`n`nDecypted to`n`n%RC4Dec% ExitApp RC4txt2hex(Data,Pass) { Format := A_FormatInteger SetFormat Integer, Hex b := 0, j := 0 VarSetCapacity(Result,StrLen(Data)*2) Loop 256 { a := A_Index - 1 Key%a% := Asc(SubStr(Pass, Mod(a,StrLen(Pass))+1, 1)) sBox%a% := a } Loop 256 { a := A_Index - 1 b := b + sBox%a% + Key%a% & 255 T := sBox%a% sBox%a% := sBox%b% sBox%b% := T } Loop Parse, Data { i := A_Index & 255 j := sBox%i% + j & 255 k := sBox%i% + sBox%j% & 255 Result .= SubStr(Asc(A_LoopField)^sBox%k%, -1, 2) } StringReplace Result, Result, x, 0, All SetFormat Integer, %Format% Return Result } RC4hex2txt(Data,Pass) { b := 0, j := 0, x := "0x" VarSetCapacity(Result,StrLen(Data)//2) Loop 256 { a := A_Index - 1 Key%a% := Asc(SubStr(Pass, Mod(a,StrLen(Pass))+1, 1)) sBox%a% := a } Loop 256 { a := A_Index - 1 b := b + sBox%a% + Key%a% & 255 T := sBox%a% sBox%a% := sBox%b% sBox%b% := T } Loop % StrLen(Data)//2 { i := A_Index & 255 j := sBox%i% + j & 255 k := sBox%i% + sBox%j% & 255 Result .= Chr((x . SubStr(Data,2*A_Index-1,2)) ^ sBox%k%) } Return Result }