InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
También puedes ver ...
SubVersion y Visual Studio
Usuarios del sistema en Windows (servicios)
Encriptación con AES Rijndael - Ejemplo
TripleDES - Un ejemplo practico en C#
Templates css para web
Insertar una marca de agua en documentos PDF
IIsAdmin.NET - Como tener mas de un sitio web en IIS en Windows XP
SoapUI - Excelente aplicacion para probar Web Services
Ejecutar un servicio WCF desde PHP
Serialización: XmlSerializer y BinaryFormater


Como encriptar texto y variables usando algoritmos estandard como DES o TRIPLEDES

Un articulo que por motivos de longitud del codigo se ha ido retrasando: como encritar usando algoritmos OFICIALES.

Este articulo está dividido en dos partes, encriptar con VB.net y desencriptar con C#

podeis ver la segunda parte aqui:

http://www.devjoker.com/contenidos/Articulos/280/Desencriptar-Texto-y-variables-con-NET-VB-y-C-(segunda-parte).aspx

Para este ejemplo usaremos el algoritmo DES que aunque ya ha sido reventado por superordenadores para una encriptación sencilla vale, si queremos usar un algoritmo más complejo como TRIPLEDES o RINDAJEL basta con cambiar una linea de codigo donde se indica, en el segundo articulo sin embargo usaremos TRIPLE DES

Normalmente los bancos suelen utilizar Triple Des para encritar sus datos lo que da una idea de su seguridad, pero para un aplicativo DES puede ser más que suficiente.

En este articulo enseñaremos encriptación simetrica, es decir la misma clave sirve para encriptar y desencriptar.

'OJO: primero establecemos un imports System.Security.Cryptography.

 

'Tanto el mensaje como los parametros para la encriptación deben estar

' en formato de Bytes por lo que convertimos Bytes el mensaje inicial

Dim messageinicial As String

messageinicial = "Santas hormonas Batman que secreto tan enigmático"

 

Dim UE As New UnicodeEncoding()

Dim message As Byte() = UE.GetBytes(messageinicial)

 

 

'La clase DESCryptoServiceProvider crea el mecanismo de encriptación

'y los paramentros que debemos guardar para poder desencriptar

 

Dim objDES As New DESCryptoServiceProvider

'Si queremos una encriptación más segura simplemente:

'Dim objDES As New TripleDESCryptoServiceProvider

 

'En vez de depender de un sólo parametro o clave esta encriptación se basa en dos parametros

'Una clave Key y un desplazamiento iv

Dim iv As Byte() = objDES.IV

Dim key As Byte() = objDES.Key

 

 

'Ahora necesitamos un Buffer o Stream para almacenar la encriptación

'Y un objeto ICryptoTransform que encripte los datos

' con independencia del algoritmo que usemos pero basado en los parametros

' que hemos creado antes

Dim objCrypto As ICryptoTransform = objDES.CreateEncryptor(key, iv)

Dim cipherStream As New IO.MemoryStream

 

'Ahora encriptamos en memoria los datos

Dim cryptoStream As New CryptoStream _

(cipherStream, objCrypto, CryptoStreamMode.Write)

cryptoStream.Write(message, 0, message.Length)

 

'Ahora guardamos el mensaje ya encriptado en una variable

'Para desencriptarlo necesitariamos los dos parametros iv y key

'Y usar el mismo algoritmo de encriptado

(aparte del mensaje a desencriptar claro está)

Dim encryptedMessage As Byte()

encryptedMessage = cipherStream.ToArray()

Esa sería la forma, luego sólo bastaría guardar en un lugar seguro las claves para poder desencriptar, en este caso hemos dejado que se generen automáticamente ambas claves pero podriamos usar siempre las mismas claves aunque esto es menos seguro.

Cuando creamos un DESCryptoServiceProvider automáticamente se crean las claves (ojo no confundir estas claves  con el par de claves publica y privada de la encriptación asimetrica que tiene otro código) pero no es obligatorio usar esas mismas claves, podemos sobreescribirlas si queremos para usar siempre las mismas.

Si os gusta el articulo podeis dejar un mensaje en los comentarios pero recordar que para las preguntas se usan los foros (no es necesario registrarse) no he incluido el codigo en C# pero si alguien lo necesita puede dejar un cometario y en breve pondremos la versión en C#.

Y recordar que la segunda parte del articulo podeis consultarla aqui:

podeis ver la segunda parte aqui:

http://www.devjoker.com/contenidos/Articulos/280/Desencriptar-Texto-y-variables-con-NET-VB-y-C-(segunda-parte).aspx

 


 Versión para imprimir  Foros de consulta

 
=) por Marianita
Respuesta recibida el [19/08/2007 11:30:37]
Interesante articulo, explicado con palabras sencillas.
Me gustaria ver la vercion en C#.

 
versión en c# por aldeamedia
Respuesta recibida el [21/08/2007 07:04:58]
Ahora mismo me pillas un poco apurado de tiempo pero si encuentro un rato publico la versión en c#

 
Funcionalidad por matu
Respuesta recibida el [26/10/2007 04:41:59]
Hola, buen articulo, podrias hacer uno en el cual una vez encriptado el dato este se almacene en SQL Server 2000 y como recuperarlo despues de la DB?.
Saludos

 
para matu por Aldeamedia
Respuesta recibida el [27/10/2007 11:25:52]
El resultado de la función es una cadena de caracteres, puedes insertarlo directamente en SQL 2000 sin problemas , y leerlo después en modo texto desde .net
Para hacerlo directamente en SQL 2000 no es posible , aunque con SQL 2005 tienes un montón de funcionalidades para hacerlo.
La versión en C# sigo sin ponerme con ella, a ver si un dia me animo.

 
Codigo en C# por CodigoX
Respuesta recibida el [12/12/2007 04:03:39]
Hola soy pricionte y quiero saber si podria poner el codigo en C# para que pueda aprender un poco mas..

 
Gracias por Danilo ramirez
Respuesta recibida el [11/01/2008 12:06:00]
en verdad muchísimas gracias, admiro mucho a la gente como tu que siento que lo hacen mas por amor a programar y al saber que por otra cosa, asi que felicidades y gracias de nuevo, pero te faltó poner que imports system.text XD, y yo no sabía eso y tuve que sacarlo XD
saludos

 
Hola por martinrivero@hotmail.com
Respuesta recibida el [16/01/2008 10:30:50]
Hola, Necesito ayuda con un TExto Encriptado, Si alguien me puede ayudar se lo agradeceria, el texto es:

NLAOIE EO PJBOFMMEE RAI URBQELCERS UV MIREOEIAO TE NSVLDE

Gracias .. martinrivero@hotmail.com

 
Desencriptar? por Aldeamedia
Respuesta recibida el [22/01/2008 04:22:08]
Sin saber el algoritmo desencriptar es francamente dificil

Si tienes suerte habrán usado un algoritmo debil busca algún programa que te saque todas las combinaciones posibles de palabras con ese número de letras

 
Codigo en C# por Starcondor
Respuesta recibida el [26/03/2008 06:56:45]

//OJO: primero establecemos un using.
using System.Security.Cryptography;

//...

//Cuerpo del metodo

//Tanto el mensaje como los parametros para la encriptación deben estar
// en formato de Bytes por lo que convertimos Bytes el mensaje inicial
string messageinicial;
messageinicial = "Santas hormonas Batman que secreto tan enigmático";

UnicodeEncoding UE = new UnicodeEncoding();
byte[] message = UE.GetBytes(messageinicial);

//La clase DESCryptoServiceProvider crea el mecanismo de encriptación
//y los paramentros que debemos guardar para poder desencriptar

DESCryptoServiceProvider objDES = new DESCryptoServiceProvider();
//Si queremos una encriptación más segura simplemente:
//TripleDESCryptoServiceProvider objDES = new TripleDESCryptoServiceProvider();

//En vez de depender de un sólo parametro o clave esta encriptación se basa en dos parametros
//Una clave Key y un vector de inicializacion iv
byte[] iv = objDES.IV;
byte[] key = objDES.Key;

//Ahora necesitamos un Buffer o Stream para almacenar la encriptación
//Y un objeto ICryptoTransform que encripte los datos
// con independencia del algoritmo que usemos pero basado en los parametros
// que hemos creado antes
ICryptoTransform objCrypto = objDES.CreateEncryptor(key, iv);
MemoryStream cipherStream = new MemoryStream();

//Ahora encriptamos en memoria los datos
CryptoStream cryptoStream = new CryptoStream(cipherStream, objCrypto, CryptoStreamMode.Write);

cryptoStream.Write(message, 0, message.Length);

//Ahora guardamos el mensaje ya encriptado en una variable
//Para desencriptarlo necesitariamos los dos parametros iv y key
//Y usar el mismo algoritmo de encriptado (aparte del mensaje a desencriptar claro está)
byte[] encryptedMessage = cipherStream.ToArray();

 
gracias Starcondor por aldeamedia
Respuesta recibida el [27/03/2008 04:23:31]
Gracias por la traducción Starcondor 

 
encriptar y desencriptar con este algoritmo por hermez
Respuesta recibida el [09/04/2008 07:44:55]
cuando encripto y descencripto me sale el resultado incompleto, 
por ejemplo:
"abcd" ---> se ingresa
"???§" ---> resultado encriptado y entrada para desencriptar
"ab" ---> resultado

deberia salir "abcd"

que puedo estar haciendo mal,alguien me podria ayudar por favor???

 
no me funciona por juan
Respuesta recibida el [28/05/2008 09:32:11]
Sigo con la duda anterior de como se hace para almacenar en sql 2000 y recuperarla desencriptandola, gracias..

 
Para preguntar los foros por aldeamedia
Respuesta recibida el [28/05/2008 01:45:38]
Para preguntar usar los foros esto son sólo comentarios sobre el articulo

 
Como Guardo el dato en la base de datos por Yuset Mercado
Respuesta recibida el [26/06/2008 05:15:59]
Estoy con aldeamedia, como creo que ese valor en string y almacenar en la db2005.

 
desifrado 3des por metal
Respuesta recibida el [06/09/2008 03:34:42]
nesecito un programa para descrip 3des de atm tengo todos los key espero por su ayuda gracias

 
Errores con el cod por EMGA
Respuesta recibida el [12/09/2008 12:21:56]
tengan todos un buen dia,solo queria saer por que al pegar el codigo de c# me aparecen unos errores que tienen que ver con parentecis, comas e iguales y no me deja ejecutar la solucion les anexo los lugares donde aparecen los errores.

cryptoStream.Write(message, 0, message.Length);

messageinicial = "Santas hormonas Batman que secreto tan enigmático";

estas son las lineas en la que me saca error. y los errores dicen Error 1 Invalid token '(' in class, struct, or interface member declaration C:\Documents and Settings\e8\Configuración local\Datos de programa\Temporary Projects\Desemcriptar texto\desemcriptar.cs 44 22 Desemcriptar texto

 
codigo de cesar en VB2005.Net por lic_inf_rodolfo@hotmail.com
Respuesta recibida el [30/09/2008 01:31:22]
Me podrain ayudar con el cifrado de cesar... necesito realizar un programa en vb2005.net que encripte y desencripte el archivo. agrdeceria que me ayudaran.

 
como`puedo conectarme de un archivo ini por Anónimo
Respuesta recibida el [13/11/2008 06:40:48]
porfa si alguien pueda ayudarme estoy buscando como puedo conectarme x intermedio de un archivo ini en vb 2005 agradecere su gentileza :)

 
hola soy polo queria darle mi ... por Anónimo
Respuesta recibida el [01/02/2009 05:33:46]
hola soy polo queria darle mi apoyo y soporte tecnico a metal sobre el encriptado de atm .encripllave48@hotmail.com

 
Encruptar con 3DES por Néstor F. Montero
Respuesta recibida el [10/02/2009 08:25:00]
Pablo, necesito saber como encryptar con 3DES (esta claro el articulo), pero sin utilizar la key y IV, podré generar la clave 3DES sin necesidad de transimtir las dos claves al receptor? O siempre las debo transmitir para desencryptar ?

 
obtener texto. por pablek
Respuesta recibida el [18/05/2009 04:39:30]
Para obtener la cadena de caracteres encriptada y meterla en una DB, solo hay que hacer esto:

Dim sCadena as String = UE.GetString(encryptedMessage).ToString()

Saludos.

 
codigo completo por rbarzallo
Respuesta recibida el [03/06/2009 03:05:18]
Buen Dia 

alguien por favor puede incluir el codigo completo para encriptar y desencriptar en c#...

Gracias de Antemano

rbarzallo

 
codigo c# por liz
Respuesta recibida el [10/06/2009 09:25:48]
hola!  me gustaria checar la version en c# es algo interesante esto, gracias...

 
que es la encriptacion de datos por ema_julia@hotmail.com
Respuesta recibida el [10/06/2009 04:29:41]
hola soy un estudiante unibercitario que necesita saber que es la encriptacion de datos. por lo que lei es desifrar esos codigos de los numeros y letras a cogigos raros pero prefiero una buena definicion.el que me pueda ayudar yo lo ayudare como pueda. mandenlo a mi mail: ema_julia@hotmail.com
y desde ya mucha gracias


leaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanlo porfavor y ayudenme con que es la encrptacion de datos

 
que es la encriptacion de datos por ema_julia@hotmail.com
Respuesta recibida el [10/06/2009 04:30:14]
hola soy un estudiante unibercitario que necesita saber que es la encriptacion de datos. por lo que lei es desifrar esos codigos de los numeros y letras a cogigos raros pero prefiero una buena definicion.el que me pueda ayudar yo lo ayudare como pueda. mandenlo a mi mail: ema_julia@hotmail.com
y desde ya mucha gracias


leaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanlo porfavor y ayudenme con que es la encrptacion de datos

 
help me por Smile
Respuesta recibida el [19/06/2009 02:18:08]
Hola necesito ayuda 
debo crear un programa en c# qe ingreses una contraseña de 4 numero del 0 al 9 y qee se escriba en asteriscos , y que al final
te muestre la contraseña que introduciste

 
Una duda por John
Respuesta recibida el [24/08/2009 09:05:40]
Disculpa hermano, soy nuevo en esto de la programación, pero me gustaria saber que librerias tengo que importar para que el codigo funciones, ya probe con system.security.criptography, pero nomas me siguen mostrando lineas como de error, cuales deberia importar, gracias por la info, muy buen codigo, pero megustaria verlo funcionando personalmente

 
que paciencia hay que tener pa... por paco
Respuesta recibida el [16/09/2009 10:02:07]
que paciencia hay que tener para soportar los comentarios de algunos...

a pedir al metro anda!

 
de bolivia por ruben zubieta
Respuesta recibida el [25/12/2009 06:58:48]
hola buen aporte pero tengo un problema escribi todo el codigo pero me sale q la (el tipo UnicodeEncoding no esta definido)
gracias


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

Título:


Para preguntar utiliza los foros.



 Versión para imprimir

Como encriptar texto y variables usando algoritmos estandard como DES o TRIPLEDES
Autor: Pablo Gumpert Fernandez (aldeamedia)
Visitas: 34992 Fecha de publicación: 14/07/2007
Pablo Gumpert es formador y consultor oficial de Microsoft para .NET y SQL server.Lleva desarrollando desde hace más de diez años y durante ese tiempo ha trabajado como programador de videojuegos ,analista informático, experto en seguridad, DBA ...
Actualmente se dedica sobre todo a la formación.
Su especialidad es la programación en .NET aunque también es experto en MSSQL Server y en el año 2002 fundó su propia empresa colaboradora de diversos centros partner Microsoft.




Visitas: 94 | Comentarios: 2 | Archivo: Articulos
02/02/2010 iPad vs Telesketch
Visitas: 796 | Comentarios: 2 | Archivo: Articulos
Categorias: Humor
Visitas: 752 | Comentarios: 3 | Archivo: Articulos
Visitas: 3153 | Comentarios: 2 | Archivo: Articulos
Categorias: C#
Visitas: 14516 | Comentarios: 7 | Archivo: Articulos
Categorias: C#|Seguridad
Visitas: 1483 | Comentarios: 3 | Archivo: Articulos
Visitas: 692 | Comentarios: 2 | Archivo: Articulos
Visitas: 369 | Comentarios: 0 | Archivo: Articulos
Visitas: 2021 | Comentarios: 2 | Archivo: Articulos
Categorias: C#

Útimos temas recibidos en los foros ...
pensiones por 29285524 ... [Access] 0 12/03/2010
certificado de porvenir por labar ... [Actualidad] 23 02/03/2010
Certificado de afiliacion Pensiones y Cesantias por VIVIANA ... [Actualidad] 2 10/03/2010
AYUDA COMANDOS BASICOS MSDOS!! por (L)MSDOS(L) ... [MS DOS] 24 12/03/2010
mananis por mananis ... [Actualidad] 0 12/03/2010
CERTIFICADO DE PENSIONES Y CESANTIAS PORVENIR por ABELLO ... [Actualidad] 0 12/03/2010
Solicitud certificado de afiliaciones a pensiones y cesantias proteccion por hz ... [Actualidad] 55 10/02/2010
certificado de pensiones y cesantias que me exigen para trabajar por viviana ... [Actualidad] 1 12/03/2010
Certificado de pensiones por liliana ... [Actualidad] 0 12/03/2010
certificado de afiliación de pensiones y cesantias por secre ... [Actualidad] 114 28/01/2010
certificado de pensiones horizonte por carla ... [Actualidad] 21 16/02/2010
certificado de pensiones del bbva horizonte por danger ... [Actualidad] 123 12/01/2010

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 ...
28/06/2006 Triggers en PL/SQL    forma parte de...Tutorial PL/SQL
10/07/2006 Funciones en PL/SQL    forma parte de...Tutorial PL/SQL
28/06/2006 Procedimientos almacenados en PL/SQL    forma parte de...Tutorial PL/SQL
21/02/2007 BULK COLLECT    forma parte de...Tutorial PL/SQL
06/09/2006 ¿Qué es el Collation en SQL ?
22/10/2005 Consultar datos. SELECT    forma parte de...Tutorial SQL
10/07/2006 Subprogramas en PL/SQL    forma parte de...Tutorial PL/SQL
17/07/2006 Tipo VARRAY    forma parte de...Tutorial PL/SQL
28/11/2006 Definición de nuevos atributos    forma parte de...Tutorial C#
31/03/2006 Operadores en PL/SQL    forma parte de...Tutorial PL/SQL

 

Encuesta
¿A que perfil te adaptas mejor?




[Ver] [Votar]