Winify – Diff between revs 28 and 41

Subversion Repositories:
Rev:
Only display areas with differencesIgnore whitespace
Rev 28 Rev 41
1 /////////////////////////////////////////////////////////////////////////// 1 ///////////////////////////////////////////////////////////////////////////
2 // Copyright (C) Wizardry and Steamworks 2016 - License: GNU GPLv3 // 2 // Copyright (C) Wizardry and Steamworks 2016 - License: GNU GPLv3 //
3 // Please see: http://www.gnu.org/licenses/gpl.html for legal details, // 3 // Please see: http://www.gnu.org/licenses/gpl.html for legal details, //
4 // rights of fair usage, the disclaimer and warranty conditions. // 4 // rights of fair usage, the disclaimer and warranty conditions. //
5 /////////////////////////////////////////////////////////////////////////// 5 ///////////////////////////////////////////////////////////////////////////
6   6  
7 using System.IO; 7 using System.IO;
8 using System.Linq; 8 using System.Linq;
9 using System.Security.Cryptography; 9 using System.Security.Cryptography;
-   10 using System.Threading.Tasks;
10   11  
11 namespace Winify.Utilities 12 namespace Winify.Utilities
12 { 13 {
13 public static class AES 14 public static class AES
14 { 15 {
15 #region Static Fields and Constants 16 #region Static Fields and Constants
16   17  
17 private const int AESKeySaltBytes = 16; 18 private const int AESKeySaltBytes = 16;
18   19  
19 private static readonly RNGCryptoServiceProvider Rng = new RNGCryptoServiceProvider(); 20 private static readonly RNGCryptoServiceProvider Rng = new RNGCryptoServiceProvider();
20   21  
21 #endregion 22 #endregion
22   23  
23 #region Public Methods 24 #region Public Methods
24   25  
25 /////////////////////////////////////////////////////////////////////////// 26 ///////////////////////////////////////////////////////////////////////////
26 // Copyright (C) Wizardry and Steamworks 2016 - License: GNU GPLv3 // 27 // Copyright (C) Wizardry and Steamworks 2016 - License: GNU GPLv3 //
27 /////////////////////////////////////////////////////////////////////////// 28 ///////////////////////////////////////////////////////////////////////////
28 public static byte[] Encrypt(byte[] plain, string password) 29 public static async Task<byte[]> Encrypt(byte[] plain, string password)
29 { 30 {
30 using (var rijndael = Rijndael.Create()) 31 using (var rijndael = Rijndael.Create())
31 { 32 {
32 rijndael.BlockSize = 128; 33 rijndael.BlockSize = 128;
33 rijndael.Mode = CipherMode.CBC; 34 rijndael.Mode = CipherMode.CBC;
34 rijndael.KeySize = 256; 35 rijndael.KeySize = 256;
35 rijndael.Padding = PaddingMode.PKCS7; 36 rijndael.Padding = PaddingMode.PKCS7;
36 var salt = new byte[AESKeySaltBytes]; 37 var salt = new byte[AESKeySaltBytes];
37 Rng.GetBytes(salt); 38 Rng.GetBytes(salt);
38 var pdb = new Rfc2898DeriveBytes(password, salt, 1000); 39 using (var pdb = new Rfc2898DeriveBytes(password, salt, 1000))
39 rijndael.Key = pdb.GetBytes(rijndael.KeySize / 8); -  
40 rijndael.IV = pdb.GetBytes(rijndael.BlockSize / 8); -  
41   -  
42 using (var memoryStream = new MemoryStream()) -  
43 { 40 {
44 using (var cryptoStream = 41 rijndael.Key = pdb.GetBytes(rijndael.KeySize / 8);
-   42 rijndael.IV = pdb.GetBytes(rijndael.BlockSize / 8);
-   43  
45 new CryptoStream(memoryStream, rijndael.CreateEncryptor(), CryptoStreamMode.Write)) 44 using (var memoryStream = new MemoryStream())
46 { 45 {
-   46 using (var cryptoStream =
-   47 new CryptoStream(memoryStream, rijndael.CreateEncryptor(), CryptoStreamMode.Write))
-   48 {
47 cryptoStream.Write(plain, 0, plain.Length); 49 await cryptoStream.WriteAsync(plain, 0, plain.Length);
48 cryptoStream.Close(); 50 cryptoStream.Close();
49   51  
50 var ciphertext = memoryStream.ToArray(); 52 var ciphertext = memoryStream.ToArray();
51   53  
52 return salt.Concat(ciphertext) 54 return salt.Concat(ciphertext).ToArray();
53 .ToArray(); 55 }
54 } 56 }
55 } 57 }
56 } 58 }
57 } 59 }
58   60  
59 /////////////////////////////////////////////////////////////////////////// 61 ///////////////////////////////////////////////////////////////////////////
60 // Copyright (C) Wizardry and Steamworks 2016 - License: GNU GPLv3 // 62 // Copyright (C) Wizardry and Steamworks 2016 - License: GNU GPLv3 //
61 /////////////////////////////////////////////////////////////////////////// 63 ///////////////////////////////////////////////////////////////////////////
62 public static byte[] Decrypt(byte[] cipher, string password) 64 public static async Task<byte[]> Decrypt(byte[] cipher, string password)
63 { 65 {
64 using (var rijndael = Rijndael.Create()) 66 using (var rijndael = Rijndael.Create())
65 { 67 {
66 rijndael.BlockSize = 128; 68 rijndael.BlockSize = 128;
67 rijndael.Mode = CipherMode.CBC; 69 rijndael.Mode = CipherMode.CBC;
68 rijndael.KeySize = 256; 70 rijndael.KeySize = 256;
69 rijndael.Padding = PaddingMode.PKCS7; 71 rijndael.Padding = PaddingMode.PKCS7;
70   72  
71 var salt = cipher.Take(16) -  
72 .ToArray(); 73 var salt = cipher.Take(AESKeySaltBytes).ToArray();
73   -  
74 var ciphertext = cipher.Skip(16) 74  
75 .ToArray(); -  
76   -  
77 var pdb = new Rfc2898DeriveBytes(password, salt, 1000); -  
78 rijndael.Key = pdb.GetBytes(rijndael.KeySize / 8); -  
79 rijndael.IV = pdb.GetBytes(rijndael.BlockSize / 8); 75 var ciphertext = cipher.Skip(AESKeySaltBytes).ToArray();
80   76  
-   77 using (var pdb = new Rfc2898DeriveBytes(password, salt, 1000))
-   78 {
81 using (var memoryStream = new MemoryStream()) 79 rijndael.Key = pdb.GetBytes(rijndael.KeySize / 8);
82 { 80 rijndael.IV = pdb.GetBytes(rijndael.BlockSize / 8);
-   81  
-   82 using (var memoryStream = new MemoryStream())
-   83 {
83 using (var cryptoStream = 84 using (var cryptoStream =
84 new CryptoStream(memoryStream, rijndael.CreateDecryptor(), CryptoStreamMode.Write)) 85 new CryptoStream(memoryStream, rijndael.CreateDecryptor(), CryptoStreamMode.Write))
85 { 86 {
-   87 await cryptoStream.WriteAsync(ciphertext, 0, ciphertext.Length);
86 cryptoStream.Write(ciphertext, 0, ciphertext.Length); 88 cryptoStream.Close();
87 cryptoStream.Close(); 89  
88   90 return memoryStream.ToArray();
89 return memoryStream.ToArray(); 91 }
90 } 92 }
91 } 93 }
92 } 94 }
93 } 95 }
94   96  
95 #endregion 97 #endregion
96 } 98 }
97 } 99 }
98   100  
99
Generated by GNU Enscript 1.6.5.90.
101
Generated by GNU Enscript 1.6.5.90.
100   102  
101   103  
102   104