comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[C#] Aes File Encrypt/Decrypt

  • 1 Respuestas
  • 2190 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado fudmario

  • *
  • Cramel
  • *
  • Mensajes: 193
  • Actividad:
    1.67%
  • Reputación 11
    • Ver Perfil
    • fudmario - GitHub
  • Skype: fudmario
« en: Noviembre 10, 2016, 09:20:36 pm »
 En base a la pregunta de un usuario que tenia problemas al cifrar archivos con una esta funcion de cifrado, decidí implementarlo....
You are not allowed to view links. Register or Login


Ejemplo de Uso:
Código: C#
  1.    // ENCRYPT FILE
  2.     Aes_Encrypt("D:\\ISOs\\660mb.iso", "D:\\Encrypted.iso.aes", "testPassword", 256, CipherMode.CFB, Encoding.UTF8);
  3.   // DECRYPT FILE
  4.     Aes_Decrypt("D:\\Encrypted.iso.aes", "D:\\Decrypted.iso", "testPassword", 256, CipherMode.CFB, Encoding.UTF8);
  5.  


Código: C#
  1.   public void Aes_Encrypt(string fileInput, string fileOutput, string password, int keySize,
  2.             CipherMode mode = CipherMode.CFB, Encoding enc = null)
  3.         {
  4.             if (enc == null)
  5.                 enc = Encoding.Default;
  6.             if (!((keySize == 128) | (keySize == 192) | (keySize == 256)))
  7.                 keySize = 256;
  8.             var buffersize = GetBufferSize(You are not allowed to view links. Register or Login FileInfo(fileInput).Length);
  9.             var salt = GenerateSalt();
  10.  
  11.             using (var fsOut = You are not allowed to view links. Register or Login FileStream(fileOutput, FileMode.Create))
  12.             {
  13.                 var passBytes = enc.GetBytes(password);
  14.                 using (var aes = You are not allowed to view links. Register or Login RijndaelManaged())
  15.                 {
  16.                     var pdb = You are not allowed to view links. Register or Login Rfc2898DeriveBytes(passBytes, salt, 50000);
  17.                     aes.KeySize = keySize;
  18.                     aes.Padding = PaddingMode.PKCS7;
  19.                     aes.Key = pdb.GetBytes(keySize/8);
  20.                     aes.IV = pdb.GetBytes(16);
  21.                     aes.Mode = mode;
  22.  
  23.                     fsOut.Write(salt, 0, salt.Length);
  24.                     using (var cs = You are not allowed to view links. Register or Login CryptoStream(fsOut, aes.CreateEncryptor(), CryptoStreamMode.Write))
  25.                     {
  26.                         using (var fsInp = You are not allowed to view links. Register or Login FileStream(fileInput, FileMode.Open))
  27.                         {
  28.                             var tmpBuffer = You are not allowed to view links. Register or Login byte[buffersize];
  29.                             var bytesRead = 0;
  30.                             do
  31.                             {
  32.                                 bytesRead = fsInp.Read(tmpBuffer, 0, tmpBuffer.Length);
  33.                                 cs.Write(tmpBuffer, 0, bytesRead);
  34.                             } while (bytesRead > 0);
  35.                         }
  36.                     }
  37.                 }
  38.             }
  39.         }
  40.  
  41.         public void Aes_Decrypt(string fileinput, string fileoutput, string password, int keySize,
  42.             CipherMode mode = CipherMode.CFB, Encoding enc = null)
  43.         {
  44.             if (enc == null)
  45.                 enc = Encoding.UTF8;
  46.             if (!((keySize == 128) | (keySize == 192) | (keySize == 256)))
  47.                 keySize = 256;
  48.             var salt = You are not allowed to view links. Register or Login byte[32];
  49.             var buffersize = GetBufferSize(You are not allowed to view links. Register or Login FileInfo(fileinput).Length);
  50.             using (var fsIn = You are not allowed to view links. Register or Login FileStream(fileinput, FileMode.Open))
  51.             {
  52.                 fsIn.Read(salt, 0, salt.Length);
  53.                 var passBytes = enc.GetBytes(password);
  54.                 using (var crypto = You are not allowed to view links. Register or Login RijndaelManaged())
  55.                 {
  56.                     var pdb = You are not allowed to view links. Register or Login Rfc2898DeriveBytes(passBytes, salt, 50000);
  57.  
  58.                     crypto.KeySize = keySize;
  59.                     crypto.Padding = PaddingMode.PKCS7;
  60.                     crypto.Key = pdb.GetBytes(keySize/8);
  61.                     crypto.IV = pdb.GetBytes(16);
  62.                     crypto.Mode = mode;
  63.  
  64.  
  65.                     using (var cs = You are not allowed to view links. Register or Login CryptoStream(fsIn, crypto.CreateDecryptor(), CryptoStreamMode.Read))
  66.                     {
  67.                         using (var fsOut = You are not allowed to view links. Register or Login FileStream(fileoutput, FileMode.Create))
  68.                         {
  69.                             var tmpBuffer = You are not allowed to view links. Register or Login byte[buffersize];
  70.                             var bytesRead = 0;
  71.                             do
  72.                             {
  73.                                 bytesRead = cs.Read(tmpBuffer, 0, tmpBuffer.Length);
  74.                                 fsOut.Write(tmpBuffer, 0, bytesRead);
  75.                             } while (bytesRead > 0);
  76.                         }
  77.                     }
  78.                 }
  79.             }
  80.         }
  81.  
  82.         private byte[] GenerateSalt()
  83.         {
  84.             var data = You are not allowed to view links. Register or Login byte[32];
  85.             using (var rng = You are not allowed to view links. Register or Login RNGCryptoServiceProvider())
  86.             {
  87.                 rng.GetBytes(data);
  88.             }
  89.             return data;
  90.         }
  91.  
  92.  
  93.         public int GetBufferSize(long filesize)
  94.         {
  95.             return filesize >= 1073741824
  96.                 ? 1048576
  97.                 : (filesize >= 524288000
  98.                     ? 524288
  99.                     : (filesize >= 104857600
  100.                         ? 131072
  101.                         : (filesize >= 10485760 ? 32768 : (filesize >= 1048576 ? 8192 : 4096))));
  102.         }
  103.  

Cualquier error o sugerencia respecto al código comentar abajo....xD


Desconectado Zentraedi

  • *
  • Underc0der
  • Mensajes: 32
  • Actividad:
    6.67%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #1 en: Noviembre 10, 2016, 10:40:47 pm »
Muy bueno tu codigo, lo voy a probar tambien andaba en algo parecido :v jajaja saludos

 

¿Te gustó el post? COMPARTILO!



Lock File - Prevenir Ejecutar, Mover, Eliminar, Cortar, Renombrar, Sobreescribir

Iniciado por 79137913

Respuestas: 0
Vistas: 1039
Último mensaje Agosto 07, 2017, 12:50:12 pm
por 79137913
[SOURCE] File 2 startup v1.1

Iniciado por Elektro

Respuestas: 0
Vistas: 886
Último mensaje Mayo 12, 2015, 11:21:52 am
por Elektro
[VB.NET] File Crypter

Iniciado por Som€body

Respuestas: 0
Vistas: 328
Último mensaje Mayo 13, 2018, 06:31:26 pm
por Som€body
Encrypt&Decrypt (xor,des,rc2,tripleDES)

Iniciado por Expermicid

Respuestas: 2
Vistas: 2970
Último mensaje Diciembre 22, 2012, 01:32:05 pm
por @NetFcruz