Os dejo un pequeño código para codificar cadenas de texto, ideal para camuflar string's en nuestros proyectos o para FUDear algún source ajeno.
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.
'***********************************************
' 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:
Private Sub Form_Load()
MsgBox eROX("elhacker.net", 7)
MsgBox dROX("765F7=3078<O::9;:N<H::9=", 7)
End Sub