¿Cual es la mejor forma para encrptar y desencriptar un texto? RESPONDE BHUO ============= Dependiendo de la seguirdad que quieras dar a ese texto, puedes emplear, desde código 'casero' hecho por tí, a complejos algoritmos de encriptación. (Lo de codigo 'casero' no es sinonimo de que dicho codigo sea malo, eh?...es un forma de hablar.) Pero hay que tener cuidado con esto. Si se trata de encriptar, por ejemplo, un campo de una tabla, por poner un simple ejemplo, cuidado que te le pillan facilmente. Con un algotimo sencillo y si el usuario tiene acceso a la tabla, puede introducir mediante el programa un texto, por ejemplo 'HOLA' y luego ver el equivalente encriptado en dicho campo. Así con un poco paciencia te podrá ir sacando todas la letras del ABCdario y consecuentemente, el codigo de encriptacion: H=ã O=¥ L=? A=Î ...despues de introducir HOLA, sabrá la equivalencia y los saltos ASCII que has dado para cada letra. Por ejemplo...hoy mismo...en las News de Visual Basic, el Tiko ha publicado esta función de encriptación: Public Function Encriptar(ByVal Texto As String) As String Dim n As Long Dim i As Long Dim Char As Long Llave = "Sistema" If CurDir <> App.Path Then ChDir (App.Path) Texto = Trim(Texto) n = Len(Llave) For i = 1 To Len(Texto) Char = Asc(Mid$(Llave, (i Mod n) - n * ((i Mod n) = 0), 1)) Mid$(Texto, i, 1) = Chr$(Asc(Mid$(Texto, i, 1)) Xor Char) Next Encriptar = Texto End Function ...ojo...hecha con codigo de VB, que por ejemplo App.Path no existe en VBA, pero la puedes sustituir por CurrentProject.Path que es lo mismo u otra hecha ya por Rubén Vigón: http://perso.wanadoo.es/rubenvigon/vcrypto.zip RESPONDE EDUARDO OLAZ ===================== Aquí te paso una función La adapté de un código que no recuerdo exactamente de donde lo saqué. (No voy a reclamar su paternidad) La función hace una conversión reversible de la cadena pasándole la cadena a encriptar con la cadena clave, de forma que: EncriptarConXor(EncriptarConXor(Cadena,Clave),Clave) = Cadena Con lo que si no conoces la clave tienes difíciel desencriptar la cadena inicial. Si hacemos: CadenaEncriptada = EncriptarConXor( "Esto es una cadena", "Pepe") y volvemos a aplicar la función: EncriptarConXor(CadenaEncriptada ,"Pepe") nos devolverá "Esto es una cadena" ____________________________________ Public Function EncriptarConXor( _ ByVal Cadena As String, _ Clave As String) _ As String Dim strCadenaEncriptada As String Dim lngCadena As Long Dim lngClave As Long Dim lngResto As Long Dim bytCaracterCadena As Byte Dim bytCaracterClave As Byte Dim bytCaracter As Byte Dim strCaracter As String * 1 Dim i As Long lngCadena = Len(Cadena) lngClave = Len(Clave) If lngClave = 0 Then EncriptarConXor = Cadena Else For i = 1 To lngCadena lngResto = i Mod lngClave 'lngResto marca la posición del caracter clave 'con cuyo código ASCII se va a hacer XOR 'Se avanza un caracter cada vez bytCaracterCadena = Asc(Mid(Cadena, i, 1)) bytCaracterClave = Asc(Mid(Clave, lngResto - lngClave * (lngResto =0), 1)) bytCaracter = bytCaracterClave Xor bytCaracterCadena strCaracter = Chr(bytCaracter) strCadenaEncriptada = strCadenaEncriptada & strCaracter Next i EncriptarConXor = strCadenaEncriptada End If End Function