encriptación en 256bit , c#, rijndael class

public class rijndael { private static string ClaveSecreta = "1MonitorFeo_Tiene_BrilloPerfecto"; public static string EncriptarCadena(string cadena) { byte[] cadenaBytes = Encoding.UTF8.GetBytes(cadena); byte[] claveBytes = Encoding.UTF8.GetBytes(ClaveSecreta); //creamos un objeto de la clase Rijndael RijndaelManaged rij = new RijndaelManaged(); //configuramos para que utilize el medo ECB rij.Mode = CipherMode.ECB; //configuramos para encriptar en 256bit rij.BlockSize = 256; //declaramos que si necesitas mas bytes agregue ceros rij.Padding = PaddingMode.Zeros; //declaramos un encriptador que use mi clave secreta y un vector de inicializacion aleatorio ICryptoTransform encriptador; encriptador = rij.CreateEncryptor(claveBytes, rij.IV); //declaramos un stream de memoria para que guarde los datos encriptados a medida que se van calculando MemoryStream memStream = new MemoryStream(); //declaramos un stream de cibrado para que pueda escribir aqui la cadena a encriptar. //Esta clase utiliza el encriptador y el stream de memoria para realizar la encriptacion y para almacenarla CryptoStream cifradoStream; cifradoStream = new CryptoStream(memStream, encriptador, CryptoStreamMode.Write); //escribo los byte a encriptar. a medida que se va escribiendo se va encripdando la candena cifradoStream.Write(cadenaBytes, 0, cadenaBytes.Length); //aviso que la encriptacion termino cifradoStream.FlushFinalBlock(); //convertimos los datos encripdatos de la memoria sobre el array byte[] cipherTextBytes = memStream.ToArray(); //cierro los datos creados memStream.Close(); cifradoStream.Close(); //convierto el resultado en base 64 para que sea legible y devuelvo el resultado return Convert.ToBase64String(cipherTextBytes); } public static string DesencriptarCadena(string cadena) { //convierto la candena y la clave en arreglos de bytes para poder usarlas en las funciones de encriptacion //en este caso la cadena la convierto usando base 64 que la codificacion usada en el metodo encriptar byte[] cadenaBytes = Convert.FromBase64String(cadena); byte[] claveBytes = Encoding.UTF8.GetBytes(ClaveSecreta); //creo un objeto de la clase rijndael RijndaelManaged rij = new RijndaelManaged(); //configuro que utilize el modo ECB rij.Mode = CipherMode.ECB; //configuro para que use encriptacion 256 bit rij.BlockSize = 256; //declaro que si necesita mas bytes agregue ceros rij.Padding = PaddingMode.Zeros; //declaro un desemcriptador que use mi clave secreado y un vector de inicializacion aleatorio ICryptoTransform desencriptador; desencriptador = rij.CreateDecryptor(claveBytes, rij.IV); //declaro un stream de memoria para que guarde losd datos encriptados MemoryStream memStream = new MemoryStream(cadenaBytes); //declaro un stream de cifrado para que pueda leer de aqui la cadena a desencriptar. Esta clase utiliza el desencriptador //y el stream de memoria para realizar la desencriptacion CryptoStream cifradoStream = new CryptoStream(memStream, desencriptador, CryptoStreamMode.Read); //declaro el lector para que lea desde el stream de cibrado a medida que vaya leyendo se ira desencriptando StreamReader lectorStream = new StreamReader(cifradoStream); //leo todos los bytes y los almaceno en una cadena string resultado = lectorStream.ReadToEnd(); //cierro los stream creados memStream.Close(); cifradoStream.Close(); return resultado; } }

Be the first to comment

You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.