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