La Web del Programador: Comunidad de Programadores
 
    Pregunta:  59624 - DUDAS CON ENCRIPTACION POR SUSTITUCION
Autor:  Francisco Camacho
La siguiente funcion trabaja perfectamente para cifrar una cadena de texto, el problema lo tengo es con la inversa, que no he logrado hacer lo contrario la presento a continuacion, explico, la funciona Cifrado esta bien la ayuda la necesito con Descifrar

'-------------------------------------------------------------------------
'FUNCION CIFRADO (FUNCIONA PERFECTAMENTE)
'-------------------------------------------------------------------------
Public Function Cifrado(ByVal Entrada As String, _
Optional CodigoOriginal As String = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ0123456789 #$%.-,+*)(_", _
Optional CodigoCifrado As String = "3E3D3C3B3A393837363534333231AE302F2E2D2C2B2A29282726254F4E4D4C4B4A494847465F4F2F1F5152535455565720") As String
Dim i As Long
Dim j As Long
Dim retStr As String
Dim c As String * 1
Entrada = UCase(Entrada)
For i = 1 To Len(Entrada)
c = Mid(Entrada, i, 1)
j = InStr(1, CodigoOriginal, c)
If j > 0 Then
retStr = retStr & Mid(CodigoCifrado, ((j * 2) - 1), 2)
Else
retStr = retStr & c
End If
Next i
Cifrado = retStr
End Function

'---------------------------------------------------------------
'FUNCION DESCIFRADO (AQUI ES LA DUDA)
'---------------------------------------------------------------

Public Function Descifrado(ByVal Entrada As String, _
Optional CodigoOriginal As String = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ0123456789 #$%.-,+*)(_", _
Optional CodigoCifrado As String = "3E3D3C3B3A393837363534333231AE302F2E2D2C2B2A29282726254F4E4D4C4B4A494847465F4F2F1F5152535455565720") As String
Dim i As Long
Dim j As Long
Dim retStr As String
Dim c As String * 1
Entrada = UCase(Entrada)
For i = 1 To Len(Entrada)
c = Mid(Entrada, i, 1)
j = InStr(1, CodigoCifrado, c)
If j > 0 Then
retStr = retStr & Mid(CodigoOriginal, ((j * 2) - 1), 1)
Else
retStr = retStr & c
End If
Next i
Descifrado = retStr
End Function

Agradezco lo que puedan hacer por mi, Gracias de antemano

  Respuesta:  Charlie Steel
Public Function Descifrado(ByVal Entrada As String, _
Optional CodigoOriginal As String = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ0123456789 #$%.-,+*)(_", _
Optional CodigoCifrado As String = "3E3D3C3B3A393837363534333231AE302F2E2D2C2B2A29282726254F4E4D4C4B4A494847465F4F2F1F5152535455565720") As String
Dim i As Long
Dim j As Long
Dim retStr As String
Dim c As String * 2
Entrada = UCase(Entrada)
For i = 1 To Len(Entrada)
c = Mid(Entrada, i, 2)
i = i + 1
j = (InStr(1, CodigoCifrado, c, vbBinaryCompare) + 1)
If j > 0 Then
retStr = retStr & Mid(CodigoOriginal, ((j / 2)), 1)
Else
retStr = retStr & c
End If
Next i
Descifrado = retStr
End Function

'Esto es lo que necesitabas???