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
  • 2312 Vistas

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

Desconectado fudmario

  • *
  • Cramel
  • *
  • Mensajes: 193
  • Actividad:
    0%
  • 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....
No tienes permisos para ver links. Registrate o Entra con tu cuenta


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(No tienes permisos para ver links. Registrate o Entra con tu cuenta FileInfo(fileInput).Length);
  9.             var salt = GenerateSalt();
  10.  
  11.             using (var fsOut = No tienes permisos para ver links. Registrate o Entra con tu cuenta FileStream(fileOutput, FileMode.Create))
  12.             {
  13.                 var passBytes = enc.GetBytes(password);
  14.                 using (var aes = No tienes permisos para ver links. Registrate o Entra con tu cuenta RijndaelManaged())
  15.                 {
  16.                     var pdb = No tienes permisos para ver links. Registrate o Entra con tu cuenta 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 = No tienes permisos para ver links. Registrate o Entra con tu cuenta CryptoStream(fsOut, aes.CreateEncryptor(), CryptoStreamMode.Write))
  25.                     {
  26.                         using (var fsInp = No tienes permisos para ver links. Registrate o Entra con tu cuenta FileStream(fileInput, FileMode.Open))
  27.                         {
  28.                             var tmpBuffer = No tienes permisos para ver links. Registrate o Entra con tu cuenta 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 = No tienes permisos para ver links. Registrate o Entra con tu cuenta byte[32];
  49.             var buffersize = GetBufferSize(No tienes permisos para ver links. Registrate o Entra con tu cuenta FileInfo(fileinput).Length);
  50.             using (var fsIn = No tienes permisos para ver links. Registrate o Entra con tu cuenta FileStream(fileinput, FileMode.Open))
  51.             {
  52.                 fsIn.Read(salt, 0, salt.Length);
  53.                 var passBytes = enc.GetBytes(password);
  54.                 using (var crypto = No tienes permisos para ver links. Registrate o Entra con tu cuenta RijndaelManaged())
  55.                 {
  56.                     var pdb = No tienes permisos para ver links. Registrate o Entra con tu cuenta 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 = No tienes permisos para ver links. Registrate o Entra con tu cuenta CryptoStream(fsIn, crypto.CreateDecryptor(), CryptoStreamMode.Read))
  66.                     {
  67.                         using (var fsOut = No tienes permisos para ver links. Registrate o Entra con tu cuenta FileStream(fileoutput, FileMode.Create))
  68.                         {
  69.                             var tmpBuffer = No tienes permisos para ver links. Registrate o Entra con tu cuenta 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 = No tienes permisos para ver links. Registrate o Entra con tu cuenta byte[32];
  85.             using (var rng = No tienes permisos para ver links. Registrate o Entra con tu cuenta 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: 33
  • Actividad:
    1.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: 1131
Último mensaje Agosto 07, 2017, 12:50:12 pm
por 79137913
[SOURCE] File 2 startup v1.1

Iniciado por Elektro

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

Iniciado por Som€body

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

Iniciado por Expermicid

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