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??? |