InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
También puedes ver ...
Creando cadenas de conexión ConnectionStrings en .net 3.5 o visual Studio 2008 usando SqlConnectionStringBuilder
Migración de WSE a WCF (Web Services de 2005 a 2008)
Cómo activar Intelisense (autocompletado) en el Web.config
TripleDES - Un ejemplo practico en C#
Problemas al conectar a redes wifi con Windows Vista
Problemas en la instalación de Visual Studio 2008-Visual studio web authoring component
Cómo consumir un Servicio WCF en vez de un Web Service
¿Quieres saber quién te tiene no admitido/eliminado en el MSN? Pues no des tu contraseña a desconocidos
Redimiento de VS2008
Insertar en una Tabla usando Linq2SQL (Linq To SQL)

Afiliados
La Web del programador
MundoProgramacion


 

Una clase sencilla para encriptar cadenas

Uno de los problemas clásicos con los que nos enfrentamos los programadores es el de encriptar los datos. La cantidad de situaciones en las que necesitamos encriptar los datos es incontable. 

Normalmente los datos se almacenan en una base de datos, y esta suele ser segura, pero las claves de conexión se encuentran en archivos de texto planos, XML ... Incluso hay muchas bases de datos en las que la información de las claves con las que los usuarios se conectan a los sistemas corporativos estan sin encriptar, con lo que además podemos llegar a comprometer la seguridad de todo nuestro sistema.

Existen complejos algoritmos que permiten la encriptación de datos y que garantizan matemáticamente que nadie los puede desencriptar, como es el caso de MD5, utilizado para emitir certificados de seguridad en sistemas SSL. Tambien existen componentes de software que realizan el trabajo de encriptación por nosotros.

Estas soluciones tienen su parte negativa, por un lado los algoritmos seguros no se pueden desencriptar, por lo que no siempre son utiles. Por otro lado los componentes de software desarrollados por compañias pueden llegar a ser muy caros y además es necesario instalarlos en el los servidores, cosa que no siempre es posible. 

La solución son los sistemas de clave pública-privada. Son sistemas en los que la encriptación se basa en un par de claves, con una clave se encriptan los datos y sólo se pueden desencriptar si se conoce la otra.

Nuestra clase esta basada en esta idea. Vamos a desarrollar una clase que escripta cadena basandose en un patrones. La clase está escrita en VB.NET, pero al utilizar unicamente tipos comunes podemos exportarla facimente a cualquier otro lenguaje.

Lo primero que vamos a hacer es crear la clase a la que vamos a llamar Encriptador.


Public Class Encriptador

End Class

La idea de esta clase es definir dos patrones, cada uno con todos los caracteres del idioma, de la A-Z en mayúscula y minuscula, los numeros ... y cada uno en un orden diferente y aleatorio. Después aplicaremos un sencillo algoritmo que nos haga correcponder cada elemento de un patrón con otro.

Lo primero que necesitamos definir los patrones,para ello tecleamos el abecedario  y los números en una cadena de texto como esta:

ABCDEFGHIJKLMNÑOPQRSTVWXYZabcdefghijklmnñopqrstvwxyz1234567890

Y ahora la desordenamos hasta que quede ilegible. Asignamos estas cadenas a nuestras cadena de patrón. Definimos las cadenas a nivel de instancia.

Tambien declaramos dos métodos, uno para encriptar la cadena y otro para encriptar una única letra, que además recibe otros dos parámetros, uno denominado variable, que representa la longitud de la cadena a encriptar y otro a_indice, que representa el índice del caracter dentro de la cadena. Con ellas construiremos un sencillo algoritmo, que evitará que alguien pueda establecer una relación del tipo de "la a es la j encriptada" y que hará que cada letra se encripte de modo diferente dependiendo de la longitud de la cadena y de donde esté situada dentro de ella. 


Public Class Encriptador

Private patron_busqueda As String = "0ABIZ2ÑebDNOEcwGl6oSñixq1..."
Private Patron_encripta As String = "vQÑO8dk1VgIPZxAR3UsLD6XBz..."
'Los patrones están aquí sin terminar por falta de espacio.

Public Function EncriptarCadena (ByVal cadena As String) As String

End Function

Private Function EncriptarCaracter (ByVal caracter As String, _
                                                            ByVal variable As Integer, _
                                                            ByVal a_indice As Integer) As String


End Function

End Class  

 

Ahora escribimos el código para EncriptarCadena, que sencillamente recorre la cadena letra a letra invocando al método de encriptar caracter, pasandole como parémetros el caracter, la longitud de la cadena y el índice de la iteración. El código es muy sencillo.


Public Function
EncriptarCadena (ByVal cadena As String) As String

   Dim idx As Integer  
   Dim result
As String
 
   For idx = 0
To cadena.Length - 1   
     
result += EncriptarCaracter(cadena.Substring(idx, 1), cadena.Length, idx)
  
Next 
   Return
result

End Function

   Ahora tenemos que escribir el método EncriptarCaracter, como hemos visto al declarar el método, recibe tres parámetros, el caracter que queremos encriptar, un entero variable (que será la longitud de la cadena a encriptar) y el indice que ocupa el caracter a encriptar dentro de la cadena que queremos encriptar. Esto nos va a permitir escribir un sencillo algoritmo para devolver el índice que le va a corresponder a nuestro caracter dentro del patron encriptado.


 Private Function
EncriptarCaracter (ByVal caracter As String, _
                                                             ByVal variable As Integer, _
                                                            ByVal a_indice As Integer)
As String
   
   Dim caracterEncriptado As String, indice As Integer

   If patron_busqueda.IndexOf(caracter) <> -1 Then 
      indice =  (patron_busqueda.IndexOf(caracter) + variable + a_indice) Mod patron_busqueda.Length 
      Return
Patron_encripta.Substring(indice, 1)
   End If

   Return caracter

 End Function

   La función busca el índice de mi caracter en la cadena denominada patron_busqueda, si lo encontramos (recordar que tenemos todas las letras y números), lo encriptamos, si no lo encontramos devolvemos el mismo caracter que hemos recibido como parámetro.

   La encriptación en muy sencilla, ¡pero muy efectiva!, encontramos el lugar que ocupa dentro del patron de busqueda el caracter, le sumamos la longitud de la cadena y le sumamos por último el lugar que ocupa el caracter que estamos encriptando dentro de ella. Obtenemos el caracter correspondiente al índice calculado dentro del patron_encriptado. De este modo conseguimos que el mismo caracter se encripte de forma diferente en cada cadena, y que una pequeña modificación en la cadena cambie totalmente la encriptación.

   Este algoritmo plantea un problema, ¿que ocurre cuando la suma de estos tres parámetro es superior a la longitud de los patrones?. Estariamos intentando estraer un elemento que supera los límites de las cadenas patrón. Para solucionar este problema trabajamos con módulos matemáticos. La operación módulo devuelve el resto de la división entera entre dos números. De este modo cuando nuestro índice supera los limites de la cadena, volvemos a la posición inicial.


Ejemplos con operaciones de modulos

15 Mod 20 ==> devuelve 15

20 Mod 20 ==> devuelve 0

21 Mod 20 ==> devuelve 1

45 Mod 20 ==> devuelve 5

   Ya tenemos nuestra clase que encripta cadenas, vamos a escribir una pequeña aplicación de consola que pruebe nuestra clase.


Module Encriptador_Test

Sub Main()

     Dim cadena As String 
     Dim enc As Encriptador 
     enc =New Encriptador() 
     Do 
         Console.WriteLine("Introduzca la cadena que quiera encriptar:")  
        
cadena = Console.ReadLine() 
         Console.WriteLine( " ==> " + enc.EncriptarCadena(cadena)) 
     Loop While cadena <> ""  

End Sub

End Module

   Vamos a ejecutar nuestro programa, y probamos a encriptar varias cadenas.


C:\VB.net\Encriptar\Encriptar\bin>encriptar.exe

Introduzca la cadena que quiera encriptar:
Hola mundo! ==> 9QPz hpKIZ!

Introduzca la cadena que quiera encriptar:
www.Devjoker.com ==> feo.Frfxy¥hb.jii

Introduzca la cadena que quiera encriptar:
La misma letra varia aaaaaaaa! ==> YB WMb¤I JC¥yH Q¥CgP v7Ky8qj4!

   Ahora necesitamos escribir lo métodos para desencriptar. Las declaraciones son parecidas.

 

Public Function DesEncriptarCadena(ByVal cadena As String) As String


End Function

Private Function DesEncriptarCaracter(ByVal caracter As String, ByVal variable As Integer, _
                                                                   ByVal a_indice As Integer) As String


End Function
  

 

   La implementación de los métodos tambien es sencilla, si bien el método de desencriptar caracter es algo más complicado, debido a la posibilidad de encontrar índices negativos. Aún así resultan faciles de comprender.

 

 Public Function DesEncriptarCadena(ByVal cadena As String) As String

    Dim idx As Integer
    Dim result As String

       For idx = 0 To cadena.Length - 1
          result+=DesEncriptarCaracter(cadena.Substring(idx, 1),cadena.Length,idx)
       Ne
xt
      
return result
 End Function

 Private Function DesEncriptarCaracter(ByVal caracter As String, _
                                                                   ByVal variable As Integer, _
                                                                   ByVal a_indice As Integer) As String

    Dim indice As Integer

    If Patron_encripta.IndexOf(caracter) <> -1 Then
     
If (Patron_encripta.IndexOf(caracter) - variable - a_indice) > 0 Then
         indice = (Patron_encripta.IndexOf(caracter) - variable - a_indice) Mod Patron_encripta.Length
     
Else
         'La línea está cortada por falta de espacio

        
indice = (patron_busqueda.Length) + ((Patron_encripta.IndexOf(caracter)
                                                                 - variable - a_indice)
 Mod Patron_encripta.Length)
     
End If
     
indice = indice Mod Patron_encripta.Length
     
Return patron_busqueda.Substring(indice, 1)
    Else
     
Return caracter
    End If

 End Function
  

   Con esto ya tenemos escrito todo el código necesario. Como vereis no se trata de un sistema excesivamente seguro, pero para poder desencriptar nuestras cadenas es necesario conocer dos patrones de 64 caracteres, que además han sido generadas de forma aleatoria. Además este código es facilmente portable a cualquier plataforma, dado que se basa completamente en tipos sencillos, cadenas de caracteres, por lo que reescribir el codigo para una clase Java es muy facil.

    Podemos encriptar datos de una forma mas segura a través de algoritmos estandar como TRIPLEDES, en este articulo explicamos como : http://www.devjoker.com/contenidos/Articulos/355/TripleDES-Un-ejemplo-practico-en-C.aspx

   El código necesario para que nuestra aplicación de consola desencripte es trivial, por lo que no lo comentaremos.

   Bueno, espero que oa haya parecido interesante el articulo, saludos y hasta la proxima.

 


 Versión para imprimir  Foros de consulta

 
Encriptacion por karla Maria Hernandez
Respuesta recibida el [27/04/2007 02:42:22]
Espero se encuentre bien, lei un poco acerca de su clase pero quisiera q me ayudara, ya que tengo que presentar un programa para encriptar cadenas. Espero lea este mensaje. Que tenga un buen dia.
Por si me corresponde mi correo es kh1209@hotmail.com

 
Gracias por Diego
Respuesta recibida el [26/05/2007 10:14:17]
Muchas gracias porque su codigo me sirvio para crear un programita que almacena passwords... 
saludos

 
EXCELENTE por ALUNA
Respuesta recibida el [26/05/2007 03:45:52]
EXCELENTES FUNCIONES GRACIAS POR PUBLICARLAS...

 
Buena clase por Ricky
Respuesta recibida el [03/07/2007 08:40:06]
Es muy buena tu clase y facil de implementar gracias por compartirla me fue muy util

 
Se agradece por Fenomenal
Respuesta recibida el [09/07/2007 12:33:35]
Se agradecen todas las ayudas que das para los que trabajamos en este,graciasssssssssss

 
No funciona.. por Carlos
Respuesta recibida el [27/07/2007 10:01:38]
Las encriptacion y desenciptacion no funcionan..

 
Carlos ... revisa lo que has h... por Anónimo
Respuesta recibida el [27/07/2007 10:25:55]
Carlos ... revisa lo que has hecho porque funciona a las mil maravillas!

 
MUY BUENO por Oscar Gonzalez
Respuesta recibida el [07/08/2007 10:46:37]
LA VERDAD, A MI ME SIRVIO MUCHO, MUCHAS GRACIAS, SOBRE TODO FUE LA IDEA PARA ALGO UN POCO MAS COMPLEJO, SOLO UN DETALLE, COPIE EL TEXTO DE ABCDE.... Y LE FALTAN LAS "U"s Y tiene repetidas las "R" pueden tener problemas con ello, saludos

 
Problemas con cadenas largas por Apoc
Respuesta recibida el [22/08/2007 02:05:54]
Excelente trabajo Pedro, solo tube un pequeño problemilla, a la hora que meti una cadena de 142 caracteres para desencriptar, algunos caracteres no los desencriptó correctamente, a que se debe?

 
Revisa que en los patrones de ... por Devjoker
Respuesta recibida el [22/08/2007 02:27:17]
Revisa que en los patrones de encriptación no haya letras repetidas.

 
Codifica y Decodifica por Dhanck
Respuesta recibida el [08/10/2007 04:23:22]
Hace mucho tiempo cree un script que hace algo parecido, pero metes tu la propia clave. 

Aqui va...

http://www.forbescreations.com/Programacion/Encripta.htm

 
Que grande eres Dhanck por Dany
Respuesta recibida el [09/10/2007 05:01:00]
Me viene super bien. Muchas Gracias

 
me salvaste por Betto
Respuesta recibida el [30/10/2007 10:27:40]
gracias por esta explicacion usando aritmetica modular

 
Gracias por ala_lee
Respuesta recibida el [31/10/2007 09:24:11]
Ya lo probe y todo bien. Se agradece el aporte.

 
Excelente publicación. Me sirv... por Antonio
Respuesta recibida el [08/01/2008 10:30:15]
Excelente publicación. Me sirvio mucho para un desarrollo que actualmente estoy trabajando

Tnks!

 
podria desencriptar un hash de... por anonimo
Respuesta recibida el [15/01/2008 05:28:14]
podria desencriptar un hash de md5 con .net ¿? o es de una sola via la encriptacion .. m dejaron crear un programa en .net que desencripte.

tengo varios programas que desencriptan MD5 y sha1 pero quiere q creo yo uno :S me darias un ejemplillo?¿

 
Ya que tienes programas que de... por Devjoker
Respuesta recibida el [16/01/2008 12:26:08]
Ya que tienes programas que desencritan MD5 y SHA1 pasanoslos, ya que hasta donde yo sé, son algoritmos de suma y no son reversibles. :-)

 
MD5 no se puede desencriptar, ... por Masta
Respuesta recibida el [25/01/2008 04:53:07]
MD5 no se puede desencriptar, idiota.

 
Como se llama esta clase por Fernando
Respuesta recibida el [11/02/2008 03:18:47]
Hola queria ver si alguien me puede decir como se llama esta clase por que tengo que documentarlo en mi trabajo y no se como se llame porfa hechenme la mano

 
Como se llama esta clase por Fernando
Respuesta recibida el [11/02/2008 03:20:31]
Porma me podrian mandar el nombre de esta clase es que lo necesito documentar para mi trabajo porfa hechanme la mano mi correo es fernando1987_8@hotmail.com y fer_rari_f1@hotmail.com

 
Como se llama esta clase por Juan
Respuesta recibida el [11/02/2008 03:50:51]
Hola alguien me puede decir como se llama esta clase por que necesito saber el nombre

 
Muy buena opción por Jorge
Respuesta recibida el [26/02/2008 12:33:05]
Excelente opción de "encriptación"

 
Implementacion de TEA por Fernando
Respuesta recibida el [29/02/2008 10:27:22]
Hola Muchas gracias por el documento, voy a usarlo para hacer mi implementacion en JAVA.

Le agradeceria si pudiese guiarme en la implementacion del algoritmo TEA, no encuentro una guia al respecto.

De antemano mil gracias

 
Muchas gracias por compartir tus conocimientos por panxo
Respuesta recibida el [10/03/2008 06:45:45]
Aportaciones como la tuya nos ayudan a los que estamos empezando en esto. Gracias por tomarte la molestia de explicarlo con tanto detalle.

 
TENGO PROBLEMA CON EL MODULO Q... por Anónimo
Respuesta recibida el [14/04/2008 06:21:21]
TENGO PROBLEMA CON EL MODULO QUE ESTA ESCRITO EN NET PERO QUE LO PASE A VB 6.0..ALGUNAS CADENAS NO LAS CONVIERTE...ALGUIEN ME PUEDE AYUDAR..DONDE ESTA EL ERROR...

Option Explicit
Private patron_busqueda As String
Private Patron_encripta As String
Public Function EncriptarCadena(ByVal cadena As String) As String
'patron_busqueda = "!Q$1zWmE2x.R%nT|c&YbU/@3vIaO#ñPsA4lSfDkFdf(G)jH5g?Jh6¿KqLp{ÑwZo7][XeCiVrB8\uNt9€M0y"
'Patron_encripta = "8\uNt9€Md0y7][XeCiVrB¿KqLp{ÑwZoG)jH5g?Jh6A4lSf.DkFf(@3vIaO#ñPs%nT|c&YbU/!Q$1zWmE2xR"
patron_busqueda = "qpwoeirutyQPWOEIRUTYañsld1234567890kfjghAÑSLDKFJGHzmxncbvZMXNCBV."
Patron_encripta = "zmxncbvZMXNCBVañsldkfjghAÑ.SLDKFJGHqpwoeirutyQPWOEIRUTY0987654321"
Dim idx As Integer
Dim result As String
For idx = 1 To Len(cadena)
result = result & EncriptarCaracter(Mid(cadena, idx, 1), Len(cadena), idx) ', patron_busqueda, Patron_encripta)
Next
EncriptarCadena = result
End Function
Private Function EncriptarCaracter(ByVal caracter As String, ByVal variable As Integer, ByVal a_indice As Integer) As String
'Dim caracterEncriptado As String
Dim indice, ResuBuscar As Integer
ResuBuscar = Buscar(patron_busqueda, caracter)
If ResuBuscar <> -1 Then
indice = (ResuBuscar + variable + a_indice) Mod Len(patron_busqueda)
If indice = 0 Then
indice = indice + 1
End If
caracter = Mid(Patron_encripta, indice, 1)
'EncriptarCaracter = caracter
End If
EncriptarCaracter = caracter
End Function
Private Function Buscar(ByVal cCadena As String, ByVal caracter As String) As Integer
Dim nLong As Integer
Dim sw As Integer
Dim nCont As Integer
Dim cLt As String
Dim nResp As Integer
nCont = 1
sw = 0
nLong = Len(Trim(cCadena))
Do While sw = 0 And nCont < nLong
cLt = Mid(Trim(cCadena), nCont, 1)
If cLt = caracter Then
sw = 1
Else
nCont = nCont + 1
End If
Loop
If nCont > nLong Then
nResp = 0
Else
nResp = nCont
End If
Buscar = nResp
End Function
Public Function DesencriptarCadena(ByVal cadena As String) As String
Dim idx As Integer
Dim result As String
For idx = 1 To Len(cadena)
result = result & DesencriptarCaracter(Mid(cadena, idx, 1), Len(cadena), idx)
Next
DesencriptarCadena = result
End Function
Private Function DesencriptarCaracter(ByVal caracter As String, ByVal variable As Integer, ByVal a_indice As Integer) As String
'patron_busqueda = "!Q$1zWmE2x.R%nT|c&YbU/@3vIaO#ñPsA4lSfDkFdf(G)jH5g?Jh6¿KqLp{ÑwZo7][XeCiVrB8\uNt9€M0y"
'Patron_encripta = "8\uNt9€Md0y7][XeCiVrB¿KqLp{ÑwZoG)jH5g?Jh6A4lSf.DkFf(@3vIaO#ñPs%nT|c&YbU/!Q$1zWmE2xR"
patron_busqueda = "qpwoeirutyQPWOEIRUTYañsld1234567890kfjghAÑSLDKFJGHzmxncbvZMXNCBV."
Patron_encripta = "zmxncbvZMXNCBVañsldkfjghAÑ.SLDKFJGHqpwoeirutyQPWOEIRUTY0987654321"

Dim indice, a, ResuBuscar As Integer
ResuBuscar = Buscar(Patron_encripta, caracter)
If ResuBuscar <> -1 Then
If (ResuBuscar - variable - a_indice) > 0 Then
indice = (ResuBuscar - variable - a_indice) Mod Len(Patron_encripta)
Else
indice = Len(patron_busqueda) + ((ResuBuscar - variable - a_indice) Mod Len(Patron_encripta))
a = indice
End If
indice = indice Mod (Len(Patron_encripta))
If indice = 0 Then
caracter = Mid(patron_busqueda, a, 1)
Else
caracter = Mid(patron_busqueda, indice, 1)
End If
DesencriptarCaracter = caracter
End If
End Function


 
ERRO DE REGRESION por ANGELL
Respuesta recibida el [14/04/2008 06:23:26]
HOLA...ANTERIOR A ESTE COMENTARIO PUSEL EL CODIGO QUE PASE A VB 6.0..LA CADENAS ES ENCRIPTADA PERO AL DEVOLVERLA A SU ESTADO NORMAL...PIERDE ALGUN CARACTER..ES DECIR NO LA CONVIERTE CORRECTAMENTE A SU DESENCRIPTACION

 
Archivos por Diego
Respuesta recibida el [08/05/2008 11:46:49]
Tengo un problema al tratar de desencriptar cadenas que tienen saltos de carro. Estoy trantando de encriptar o desencriptar un archivo completo pero cuando este tiene más de una linea la clase ya no funciona bien. He intentado agregar el espacio y el salto de carro a los patrones pero nada. Alguna sugerencia

 
MD5 en Power Builder por Cris
Respuesta recibida el [09/05/2008 10:10:02]
Necesito implementar MD5 en Power Builder o algún otro algoritmo que no sea reversible, me pueden ayudar por favor? 

 
Simbolos por Andres
Respuesta recibida el [19/06/2008 12:58:20]
Yo lo probe y es exelente tu codigo pero necesitaria saber si aparte de las letras y de los numeros se pueden agregar simbolos como por ejemplo /*-+()/&% etc.., muchas gracias por tu ayuda.

 
jajaj por dj
Respuesta recibida el [08/07/2008 10:41:02]
no tienen en que pasar el tiempo por dios comprate una vida 

son una hueva

 
Traducción A JSP por JBR
Respuesta recibida el [17/07/2008 11:59:33]
Hola, Quisiera saber si alguien ha traducido esto a JSP, ya que soy novato en esto y me gustaría encriptar una clave 

 
Aporte para el funcionamiento de la clase por Collins
Respuesta recibida el [30/07/2008 09:20:38]
El método que utiliza esta clase es muy bueno... 
Al principio me funcionó bien, pero a medida que fui encriptando diferentes cadenas me surgieron problemas; aún más cuando alargaba o agrandaba estas cadenas. Esto me frustró bastante. Empecé a buscar otras formas y decidí mejor revizar que sucedía paso por paso.
El error que encontré esta en el uso del operador MOD ya que este retorna 'casi siempre' los valores que corresponden cuando se le llama a la variable 'Indice'.
El problema lo solucioné.
El algoritmo lo implementé en VB6 y le agregué una función para que me emulara el valor devueldo por el operador MOD de una forma más efectiva.
Haciendole algunas correctiones a los patrones, utilizando la función de emulación de MOD y agregandole más carácteres al patrón, obtuve excelentes resultados.
Por el momento evalúa bien todo lo que le he puesto.

La clase está perfecta, es de gran utilidad.
Espero que mis comentarios le sean de utilidad.
Saludos para esa mente.

 
Cuanto demoran en postearse los comentarios? por Collins
Respuesta recibida el [01/08/2008 10:45:30]
Solo para consultar...no es una pregunta técnica.
Saludos!

 
Re: ERRO DE REGRESION por ANGELL por Collins
Respuesta recibida el [01/08/2008 10:55:16]
Como lo escribí anteriormente, al implementar el código en VB.6 hay que hacer modificaciones, ya que las cadenas no se manejan desde la posición 0, valor que devuelve el operardor MOD, dependiendo de la cadena, cuando se utiliza.
Luego de esto, me funciona perfectamente.
Saludos!

 
encriptacion de datos por necesito ayuda para mañana 20 de agosto
Respuesta recibida el [18/08/2008 06:18:49]
 hola  como estan..m piden en la u ingresar una frase i encriptarla k invente un algoritmo para esto...lo k pasa es k trabajo con vb.net c++  pero usando el "using namespace std" i todo eso k explica la pagina no se como traducirlo m explico...espero alguna respuesta porfa

 
alguien k m pueda ayudar con e... por encriptaciond e datos
Respuesta recibida el [20/08/2008 01:23:50]
alguien k m pueda ayudar con esto lo anterior de encriptacion de una frase en visual.net en c++ si es posible para entenderlo!!!

 
Donde puedo conseguir información por Marcelo Rojas
Respuesta recibida el [09/09/2008 09:59:59]
Hola,te pasaste con este ejemplo. Pero estoy interesado en encontrar el pseudocodigo de encriptacion sha-1. trabajo en desarrollo de facturaciónn electrónica y quiero construir mi propio componente de firma digital. quiero entender bien el proceso de encriptación. Si sabes donde puedo encontrarlo liberare el desarrollo de mi dll para que todos puedan usarlo libremente.

Muchas gracias.

 
En vb 6.0 por Martin
Respuesta recibida el [21/09/2008 02:27:32]
Hola queria saber si alguien lo tiene como para vb 6.0 ?? 
Saludos Martin

 
En vb 6.0 por Martin
Respuesta recibida el [21/09/2008 02:28:35]
Mi mail es mabrojo@gmail.com, si pueden mandarme algo muchas gracias

Saludos

 
AYUDA por EMGA
Respuesta recibida el [25/09/2008 04:21:28]
nesecito que alguien me ayude 
intento migrar este cod a vb.net pero me crea unos cuantos errores quien podria ayudarme con ellos no es si no que miren el cod y me digan en las lineas que aparece el error que es el mismo en todas como debo de modificar los parametros que producen error.


Option Explicit

Public Const ENCRYPT As Long = 1, DECRYPT As Long = 2

Public Function EncryptString(UserKey As String, _
Text As String, _
Action As Single) As String

Dim UserKeyX As String
Dim temp As Integer
Dim Times As Integer
Dim I As Integer
Dim j As Integer
Dim N As Integer
Dim rtn As String

'//Get UserKey characters
N = Len(UserKey)
ReDim UserKeyASCIIS(1 To N)
For I = 1 To N
UserKeyASCIIS(I) = Asc(Mid(UserKey, I, 1))
Next

'//Get Text characters
ReDim TextASCIIS(Len(Text)) As Integer
For I = 1 To Len(Text)
TextASCIIS(I) = Asc(Mid(Text, I, 1))
Next

'//Encryption/Decryption
If Action = ENCRYPT Then
For I = 1 To Len(Text)
j = IIf(j + 1 >= N, 1, j + 1)
temp = TextASCIIS(I) + UserKeyASCIIS(j)
If temp > 255 Then
temp = temp - 255
End If
rtn = rtn + Chr$(temp)
Next
ElseIf Action = DECRYPT Then
For I = 1 To Len(Text)
j = IIf(j + 1 >= N, 1, j + 1)
temp = TextASCIIS(I) - UserKeyASCIIS(j)
If temp < 0 Then
temp = temp + 255
End If
rtn = rtn + Chr$(temp)
Next
End If

'//Return
EncryptString = rtn
End Function


de antemano gracias


Añadir comentario ... Para preguntar utiliza los foros
Autor:

Título:


Para preguntar utiliza los foros.



 Versión para imprimir

Una clase sencilla para encriptar cadenas
Autor: Pedro Herrarte Sánchez
Visitas: 22800 Fecha de publicación: 19/10/2005
Pedro Herrarte, es consultor independiente, ofreciendo sercivios de consultoría, análisis, desarrollo y formación.

Posee mas de diez años de experiencia trabajando para las principales empresas de España.

Es especialista en tecnologías .NET, entornos Web, bases de datos (SQL Server y ORACLE) e integración de sistemas.

Es experto en desarrollo (C#, ASP.NET, VB.Net, T-SQL, PL/SQL, , ASP, CGI , C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...) y bases de datos (SQL Server y ORACLE).

Es fundador, diseñador y programador de www.devjoker.com.




Visitas: 28 | Comentarios: 0 | Archivo: Articulos
Categorias: Transact-SQL|LinQ
Visitas: 442 | Comentarios: 0 | Archivo: Articulos
Categorias: Visual Basic .NET|C#|ASP.NET|ASP.NET|Programación|ADO.NET
27/09/2008 Navegando ....
Visitas: 107 | Comentarios: 0 | Archivo: Articulos
Categorias: Humor
Visitas: 244 | Comentarios: 0 | Archivo: Articulos
Categorias: Visual Basic .NET|C#|ASP.NET|ASP.NET|Programación|WCF
Visitas: 1107 | Comentarios: 0 | Archivo: Articulos
Categorias: C#
Visitas: 244 | Comentarios: 0 | Archivo: Articulos
Categorias: JavaScript|ASP.NET
Visitas: 727 | Comentarios: 0 | Archivo: Articulos
Categorias: Windows XP|Linux|Windows Vista
Visitas: 493 | Comentarios: 0 | Archivo: Articulos
Categorias: Linux|BSD
Visitas: 257 | Comentarios: 0 | Archivo: Articulos
Categorias: Programación|Actualidad
18/08/2008 SQL Server 2008
Visitas: 1237 | Comentarios: 1 | Archivo: Articulos
Categorias: Transact-SQL

Útimos temas recibidos en los foros ...
tutorial por Maria ... [SQL] 1 15/10/2008
autogenerado essalud codigo por tavo1970 ... [Visual Basic .NET] 26 27/12/2006
Hacer un programa de una nave en JAVA por Pablo ... [Java] 1 19/09/2008
ing. de sistemas por jihur ... [ORACLE] 0 15/10/2008
varchar2(1) vs varchar(1) por edu ... [ORACLE] 0 15/10/2008
variable escalar por peyin ... [Visual Basic .NET] 0 15/10/2008
necesito a por la rubia ... [Actualidad] 2 14/10/2008
descargar tutorial C# por afmp ... [C#] 1 14/10/2008
Conexion a BD por Maurito22 ... [Visual Basic .NET] 4 19/06/2007
insertar un tipo LONG en tabla por angustias ... [ORACLE] 4 14/10/2008
Recuperar contraseña automatica de un usario por jhors ... [ASP.NET] 0 15/10/2008
Problema Eventos del Mouse por Miguel ... [C#] 2 20/10/2007

Access CGI JSP ORACLE UNIX
Actualidad HTML/DHTML/XHTML LINUX PHP Visual Basic .NET
ASP ISAPI MS DOS Power Builder Visual Basic 6.0
ASP.NET Java mySQL SQL WIN 98/NT/2000/XP
C# JavaScript Opinion SQL Server

devjoker  Te recomendamos además ...
29/09/2006 MSIL - Microsoft Intermediate Language    forma parte de...Conceptos generales .NET