Merge pull request #2081 from Vest/refactor_rijndael

Fixed compiler warning
This commit is contained in:
Faryan Rezagholi
2021-12-14 19:36:32 +01:00
committed by GitHub

View File

@@ -24,29 +24,24 @@ namespace mRemoteNG.Security.SymmetricEncryption
BlockSizeInBytes = 16; BlockSizeInBytes = 16;
} }
public string Encrypt(string strToEncrypt, SecureString strSecret) public string Encrypt(string strToEncrypt, SecureString strSecret)
{ {
if (strToEncrypt == "" || strSecret.Length == 0) if (string.IsNullOrWhiteSpace(strToEncrypt) || strSecret.Length == 0)
return strToEncrypt; return strToEncrypt;
try try
{ {
var rd = new RijndaelManaged(); using var aes = Aes.Create();
using var md5 = MD5.Create();
var md5 = new MD5CryptoServiceProvider();
var key = md5.ComputeHash(Encoding.UTF8.GetBytes(strSecret.ConvertToUnsecureString())); var key = md5.ComputeHash(Encoding.UTF8.GetBytes(strSecret.ConvertToUnsecureString()));
md5.Clear(); md5.Clear();
rd.Key = key; aes.Key = key;
rd.GenerateIV(); aes.GenerateIV();
var iv = rd.IV; using var ms = new MemoryStream(aes.IV);
var ms = new MemoryStream();
ms.Write(iv, 0, iv.Length); var cs = new CryptoStream(ms, aes.CreateEncryptor(), CryptoStreamMode.Write);
var cs = new CryptoStream(ms, rd.CreateEncryptor(), CryptoStreamMode.Write);
var data = Encoding.UTF8.GetBytes(strToEncrypt); var data = Encoding.UTF8.GetBytes(strToEncrypt);
cs.Write(data, 0, data.Length); cs.Write(data, 0, data.Length);
@@ -54,7 +49,7 @@ namespace mRemoteNG.Security.SymmetricEncryption
var encdata = ms.ToArray(); var encdata = ms.ToArray();
cs.Close(); cs.Close();
rd.Clear(); aes.Clear();
return Convert.ToBase64String(encdata); return Convert.ToBase64String(encdata);
} }
@@ -74,31 +69,25 @@ namespace mRemoteNG.Security.SymmetricEncryption
try try
{ {
var plaintext = ""; using var aes = Aes.Create();
using var md5 = MD5.Create();
var key = md5.ComputeHash(Encoding.UTF8.GetBytes(password.ConvertToUnsecureString()));
using (var rijndaelManaged = new RijndaelManaged()) md5.Clear();
{ aes.Key = key;
using (var md5 = new MD5CryptoServiceProvider())
{
var key = md5.ComputeHash(Encoding.UTF8.GetBytes(password.ConvertToUnsecureString()));
rijndaelManaged.Key = key;
}
var ciphertext = Convert.FromBase64String(ciphertextBase64); var ciphertext = Convert.FromBase64String(ciphertextBase64);
var memoryStream = new MemoryStream(ciphertext); using var ms = new MemoryStream(ciphertext);
var iv = new byte[BlockSizeInBytes];
memoryStream.Read(iv, 0, iv.Length);
rijndaelManaged.IV = iv;
var cryptoStream = new CryptoStream(memoryStream, rijndaelManaged.CreateDecryptor(), var iv = new byte[BlockSizeInBytes];
CryptoStreamMode.Read); ms.Read(iv, 0, iv.Length);
using (var streamReader = new StreamReader(cryptoStream, Encoding.UTF8, true)) aes.IV = iv;
{
plaintext = streamReader.ReadToEnd(); using var cryptoStream = new CryptoStream(ms, aes.CreateDecryptor(), CryptoStreamMode.Read);
rijndaelManaged.Clear(); using var streamReader = new StreamReader(cryptoStream, Encoding.UTF8, true);
} var plaintext = streamReader.ReadToEnd();
} // rijndaelManaged aes.Clear();
return plaintext; return plaintext;
} }