wasSharpNET

Subversion Repositories:
Compare Path: Rev
With Path: Rev
?path1? @ 29  →  ?path2? @ 30
/Cryptography/AES.cs
@@ -8,11 +8,12 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using System.Security.Cryptography;
 
namespace wasSharpNET.Cryptography
{
public class AES
public static class AES
{
private const int AES_BLOCK_SIZE = 128;
private const CipherMode AES_CIPHER_MODE = CipherMode.CBC;
@@ -30,7 +31,7 @@
/// <param name="key">the encryption key</param>
/// <param name="separator">the separator to use between the cyphertext and the IV</param>
/// <returns>Base64 encoded encrypted data</returns>
public string wasAESEncrypt(string data, string key, string separator = ":")
public static async Task<string> Encrypt(string data, string key, string separator = ":")
{
using (var rijdanelManaged = new RijndaelManaged())
{
@@ -46,7 +47,6 @@
rijdanelManaged.Key = derivedKey.GetBytes(rijdanelManaged.KeySize / 8);
rijdanelManaged.IV = derivedKey.GetBytes(rijdanelManaged.BlockSize / 8);
 
byte[] encryptedData;
using (var encryptor = rijdanelManaged.CreateEncryptor(rijdanelManaged.Key, rijdanelManaged.IV))
{
using (var memoryStream = new MemoryStream())
@@ -55,13 +55,12 @@
{
using (var streamWriter = new StreamWriter(cryptoStream))
{
streamWriter.Write(data);
await streamWriter.WriteAsync(data);
return string.Join(separator, Convert.ToBase64String(salt), Convert.ToBase64String(memoryStream.ToArray()));
}
}
encryptedData = memoryStream.ToArray();
}
}
return string.Join(separator, Convert.ToBase64String(salt), Convert.ToBase64String(encryptedData));
}
}
 
@@ -78,7 +77,7 @@
/// <param name="key">the encryption key</param>
/// <param name="separator">the separator to use between the cyphertext and the IV</param>
/// <returns>the decrypted data</returns>
public string wasAESDecrypt(string data, string key, string separator = ":")
public static async Task<string> Decrypt(string data, string key, string separator = ":")
{
// retrieve the salt from the data.
var segments = new List<string>(data.Split(new[] {separator}, StringSplitOptions.None));
@@ -85,7 +84,6 @@
if (!segments.Count().Equals(2))
throw new ArgumentException("Invalid data.");
 
string plaintext;
using (var rijdanelManaged = new RijndaelManaged())
{
// FIPS-197 / CBC
@@ -106,13 +104,12 @@
{
using (var streamReader = new StreamReader(cryptoStream))
{
plaintext = streamReader.ReadToEnd();
return await streamReader.ReadToEndAsync();
}
}
}
}
}
return plaintext;
}
}
}