elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 04:34  


Tema destacado: Suscripción al boletín mensual de elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (Moderador: [D4N93R])
| | | |-+  [C#] cifrar/descifrar en AES
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C#] cifrar/descifrar en AES  (Leído 6,670 veces)
Mace Windu

Desconectado Desconectado

Mensajes: 29


Flaming Our Skills Team


Ver Perfil WWW
[C#] cifrar/descifrar en AES
« en: 11 Enero 2009, 15:26 »

Bueno, el código está hecho en C# y corre perfectamente bajo VS 2008. Utiliza el famoso algoritmo de cifrado AES.

Namespaces utilizados:

  • System;
  • System.Security.Cryptography;

Argumentos:

  • PlainText: Texto a cifrar.
  • Password: Nuestra contraseña.
  • hashAlgorithm: El algoritmo para generar el hash, puede ser MD5 o SHA1.
  • SaltValue: Puede ser cualquier cadena.
  • InitialVector: Debe ser una cadena de 16 bytes, es decir, 16 caracteres.
  • PasswordIterations: Con uno o dos será suficiente.
  • KeySize: Puede ser cualquiera de estos tres valores: 128, 192 o 256.

Esta función cifra:

Código
public static string Encrypt(string PlainText, string Password, string SaltValue, string hashAlgorithm, int PasswordIterations, string InitialVector, int KeySize)
       {
           try
           {
               byte[] InitialVectorBytes = Encoding.ASCII.GetBytes(InitialVector);
               byte[] saltValueBytes = Encoding.ASCII.GetBytes(SaltValue);
               byte[] plainTextBytes = Encoding.UTF8.GetBytes(PlainText);
 
               PasswordDeriveBytes password = new PasswordDeriveBytes(Password, saltValueBytes, hashAlgorithm, PasswordIterations);
 
               byte[] keyBytes = password.GetBytes(KeySize / 8);
 
               RijndaelManaged symmetricKey = new RijndaelManaged();
 
               symmetricKey.Mode = CipherMode.CBC;
 
               ICryptoTransform encryptor = symmetricKey.CreateEncryptor(keyBytes, InitialVectorBytes);
 
               MemoryStream memoryStream = new MemoryStream();
 
               CryptoStream cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write);
 
               cryptoStream.Write(plainTextBytes, 0, plainTextBytes.Length);
 
               cryptoStream.FlushFinalBlock();
 
               byte[] cipherTextBytes = memoryStream.ToArray();
 
               memoryStream.Close();
               cryptoStream.Close();
 
               string cipherText = Convert.ToBase64String(cipherTextBytes);
 
               return cipherText;
           }
           catch
           {
               MessageBox.Show("The typed information is wrong. Please, check it.", "FoS TeaM", MessageBoxButtons.OK, MessageBoxIcon.Stop);
               return null;
           }
       }

Y esta descifra:

Código
 public static string Decrypt(string PlainText, string Password, string SaltValue, string HashAlgorithm, int PasswordIterations, string InitialVector, int KeySize)
       {
           try
           {
               byte[] InitialVectorBytes = Encoding.ASCII.GetBytes(InitialVector);
               byte[] saltValueBytes = Encoding.ASCII.GetBytes(SaltValue);
 
               byte[] cipherTextBytes = Convert.FromBase64String(PlainText);
 
               PasswordDeriveBytes password = new PasswordDeriveBytes(Password, saltValueBytes, HashAlgorithm, PasswordIterations);
 
               byte[] keyBytes = password.GetBytes(KeySize / 8);
 
               RijndaelManaged symmetricKey = new RijndaelManaged();
 
               symmetricKey.Mode = CipherMode.CBC;
 
               ICryptoTransform decryptor = symmetricKey.CreateDecryptor(keyBytes, InitialVectorBytes);
 
               MemoryStream memoryStream = new MemoryStream(cipherTextBytes);
 
               CryptoStream cryptoStream = new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read);
 
               byte[] plainTextBytes = new byte[cipherTextBytes.Length];
 
               int decryptedByteCount = cryptoStream.Read(plainTextBytes, 0, plainTextBytes.Length);
 
               memoryStream.Close();
               cryptoStream.Close();
 
               string plainText = Encoding.UTF8.GetString(plainTextBytes, 0, decryptedByteCount);
 
               return plainText;
           }
           catch
           {
               MessageBox.Show("The typed information is wrong. Please, check it.", "FoS TeaM", MessageBoxButtons.OK, MessageBoxIcon.Stop);
               return null;
           }
       }

Salu2


En línea
WODZAROD

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: [C#] cifrar/descifrar en AES
« Respuesta #1 en: 20 Diciembre 2010, 03:44 »

Hola, tienes alguna aplicación en Visual C# o en otro software de cifrado AES. Haber si me puedes facilitar una aplicacòn con tu ejemplo mostrado, te lo agradecería mucho.

Rómulo


En línea
[D4N93R]
Moderador
***
Desconectado Desconectado

Mensajes: 1.647


My software never has bugs. Its just features!


Ver Perfil WWW
Re: [C#] cifrar/descifrar en AES
« Respuesta #2 en: 20 Diciembre 2010, 04:10 »

Ese código lo posteó otra persona, en otro foro. Por favor editar el post y colocar la fuente original, sino será borrado.

Un saludo!
En línea

Shell Root


Desconectado Desconectado

Mensajes: 2.456


Alex Jurado


Ver Perfil WWW
Re: [C#] cifrar/descifrar en AES
« Respuesta #3 en: 20 Diciembre 2010, 04:24 »

No creo que mi amigo Javier sea un copión. ES EL MISMO USUARIO. :D

PD: @[D4N93R], lo viste en WinJaNet?
En línea

---
[D4N93R]
Moderador
***
Desconectado Desconectado

Mensajes: 1.647


My software never has bugs. Its just features!


Ver Perfil WWW
Re: [C#] cifrar/descifrar en AES
« Respuesta #4 en: 20 Diciembre 2010, 04:56 »

Por casualidad alguien me había mandado eso hace tiempo para que lo revisara y me acordé, por eso llo busqué y encontré el mismo en varios foros, por lo que si es el autor todo lo que tiene es que ponerse como tal, eso es todo :) Tu sabes, para evitar problemas.

Un saludo!

PD: Pase lo que pase es un buen código, por lo que apenas él edite el post, lo pongo en Temas interesantes.! :)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
conexion sin cifrar
Dudas Generales
van26 1 3,317 Último mensaje 28 Julio 2006, 08:44
por Neobius
Programa para cifrar y descifrar archivos con varios métodos
Software
Swicher 0 994 Último mensaje 7 Septiembre 2008, 12:01
por Swicher
¿Cifrar contraseñas?
Scripting
RedKnight 4 1,273 Último mensaje 29 Mayo 2009, 00:47
por Darioxhcx
descifrar archivo con contraseña a partir del mismo archivo sin cifrar
Criptografía
klyfa 2 2,268 Último mensaje 9 Marzo 2010, 19:37
por APOKLIPTICO
[c++] Cifrar y descifrar archivos
Programación C/C++
CrisQC 0 1,399 Último mensaje 22 Noviembre 2010, 00:53
por CrisQC
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines