Some C# 3DES encryption code and linux stuff…

Hoy me encontré un código que hice en unas demostraciones para Banamex cuando estaba en el DotNetCenter. Es muy sencillo, lo hice rápidamente para demostrar lo sencillo que es programar algoritmos de encripción utilizando el namespace System.Security.

Pueden usar este código para almacenar alguna cadena o algo que se les parezca, que requiera regreso (desencripción)… les recomiendo que si necesitan una función para almacenar contraseñas en una base de datos, mejor generen un Hash; ya si que si nuestra aplicación desencripta el password y lo compara podría ser más suceptible a ser hackeada.

1 using System;
2 using System.Security.Cryptography;
3 using System.Text;
4
5 namespace GAttach_NET
6 {
7
8 public class cypher
9 {
10
11 public cypher()
12 {
13 }
14
15 public string Encrypt(string original, string key)
16 {
17 TripleDESCryptoServiceProvider des;
18 MD5CryptoServiceProvider hashmd5;
19
20 byte[] keyhash, buff;
21 string encrypted;
22
23 hashmd5 = new MD5CryptoServiceProvider();
24 keyhash = hashmd5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(key));
25
26 hashmd5 = null;
27 des = new TripleDESCryptoServiceProvider();
28
29 des.Key = keyhash;
30 des.Mode = CipherMode.ECB;
31
32 buff = ASCIIEncoding.ASCII.GetBytes(original);
33 encrypted = Convert.ToBase64String(
34
35 des.CreateEncryptor().TransformFinalBlock(buff, 0, buff.Length)
36
37 );
38
39 return encrypted;
40 }
41
42 public string Decrypt(string encrypted, string key)
43 {
44 TripleDESCryptoServiceProvider des;
45 MD5CryptoServiceProvider hashmd5;
46 byte[] keyhash, buff;
47 string decrypted;
48 hashmd5 = new MD5CryptoServiceProvider();
49
50 keyhash = hashmd5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(key));
51 hashmd5 = null;
52 des = new TripleDESCryptoServiceProvider();
53 des.Key = keyhash;
54
55 des.Mode = CipherMode.ECB;
56 buff = Convert.FromBase64String(encrypted);
57 decrypted = ASCIIEncoding.ASCII.GetString(
58 des.CreateDecryptor().TransformFinalBlock(buff, 0, buff.Length));
59
60 return decrypted;
61 }
62 }
63
64 }

En otros temas, hoy se inició un thread que si era mejor Linux que Windows… es bastante desgastante este tema y yo lo que recomiendo es que ya… usen el SO que les parezca más adecuado; dejen de estarse quejando de MS y sus tecnologías, si no les gustan… ¡pues no las usen!

Precisamente hoy estuve en una reunión con el Director de Sistemas de una empresa (la cual nombraremos X) y se la pasó quejandose que si Exchange no jalaba, que fué MS y les dijo que no se podía (pero ellos lo hicieron y sí pudieron) que migraron de Exchange 5.5 a Exchange 2000 y tuvieron muchas broncas que no habían tenido con Linux y Unix, etc, etc.

Pues si creen que Linux es mejor y van a lograr hacer todo lo que Windows 2003 Server puede hacer con un mínimo de fuzz en la adminsitración, los invito a que hagan esta prueba y decidan por ustedes…

Normalmente esas «broncas» que tienen es por falta de conocimiento de la herramienta y hacerlo todo a la «viva México»… yo no digo que la tecnología de MS no tenga problemas, pero tampoco la de Linux se salva [lean esto de Icaza], ya que después de que revisamos algunas de sus migraciones que MS había recomendado que no eran las adecuadas (nunca dijo que no se podían) nos encontramos que la mayoría de las broncas de su instalación se debían a errores humanos y una instalación inadecuada.

En mi opinión, las dos tecnologías comparten beneficios y debilidades; y las empresas tienen que alinear su visión tecnológica y de negocio a lo que mejor le convenga. Lo que sí me molesta es que vayamos a presentar una solución y se dediquen a criticar a MS y todo lo que está a su alrededor y nos amenacen con usar Linux (if it is… so be it)…

Los invito a que conozcan más de MS y su visión tecnológica más a fondo y decidan por ustedes; no se dejen llevar por la palabra «gratis» o «libre» que muchas de estas percepciones están alejadas de la realidad.

Cheers!


Comentarios

Deja una respuesta