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)
Generar archivos PDF con C#
Reemplazar __doPostBack
¿El fin de los servidores de 32Bits?
TransactionScope - Simplificando el trabajo con transacciones.
Google Trends, adiós Alexa adiós ...
Fiddler - Indispensable para el desarrollo Web
LinQ To SQL - Un ejemplo sencillo
Cómo activar Intelisense (autocompletado) en el Web.config

Afiliados
La Web del programador
MundoProgramacion


 

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.


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: 12350 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: 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: 245 | 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 ...
22/10/2005 Vistas    forma parte de...Tutorial SQL
29/09/2006 Assemblies    forma parte de...Conceptos generales .NET
31/03/2006 Tipos de datos en PL/SQL    forma parte de...Tutorial PL/SQL
22/10/2005 Indices    forma parte de...Tutorial SQL
24/05/2006 Cursores Explicitos en PL/SQL    forma parte de...Tutorial PL/SQL
01/01/2005 Conceptos básicos.    forma parte de...Iniciación a las bases de datos
16/11/2005 Delegados en C#
10/10/2006 Como conectar a ORACLE con Java
23/05/2006 Cursores en PL/SQL    forma parte de...Tutorial PL/SQL
22/10/2005 Actualización de datos. UPDATE    forma parte de...Tutorial SQL

 

Encuesta
¿A que perfil te adaptas mejor?
[Ver] [Votar]