El algoritmo no es muy complicado, pero cumple 3 requisitos que para mí son indispensables:
- Se utiliza una key para la codificación. Un mismo texto se puede codificar de infinitas formas distintas.
- La cadena codificada contiene caracteres imprimibles
- Si se codifica un texto homogeneo (aaaaaaaaaa) devuelve una cadena heterogenea (7347137;;997<9)
Además, como se puede observar, el algoritmo utiliza la codificación Hexadecimal, pero la cadena final contiene caracteres que no son Hexadecimales. El texto codificado será de tamaño t(i) = t(x) * 2.
Código
'*********************************************** ' Name: ROX Encryption 1.0 ' Author: MadAntrax ' Date: 13/09/2013 ' URL: foro.elhacker.net ' Usage: eROX(string,password) to encrypt text ' dROX(string,password) to decrypt text '*********************************************** Function eROX(ByVal S As String, ByVal P As Integer) As String For i = 1 To Len(S) T1 = Hex(Asc(Mid(S, i, 1))) If Len(T1) <> 2 Then T1 = Chr(48) & T1 T2 = T2 & T1 Next i For i = 1 To Len(T2) R = R & Chr(Asc(Mid(T2, i, 1)) Xor (i Mod (P + 1)) Xor ((P + 2) Mod i)) Next i eROX = R End Function Function dROX(ByVal S As String, ByVal P As Integer) As String For i = 1 To Len(S) R = R & Chr(Asc(Mid(S, i, 1)) Xor (i Mod (P + 1)) Xor ((P + 2) Mod i)) Next i For i = 1 To Len(R) Step 2 F = F & Chr(Val("&H" & Mid(R, i, 2))) Next i dROX = F End Function
Os dejo un ejemplo sobre como codificar/decodificar texto:
Código
Private Sub Form_Load() MsgBox eROX("elhacker.net", 7) MsgBox dROX("765F7=3078<O::9;:N<H::9=", 7) End Sub