Я пытаюсь сохранить и получить идентификатор пользователя / пароль для входа в базу данных из основного приложения Asp.Net. так как это конфиденциальная информация, я попытался зашифровать / расшифровать.
Вот мой класс шифрования / дешифрования.
public class EncryptorDecryptor
{
public static string Encrypt(string text, string key)
{
var _key = Encoding.UTF8.GetBytes(key);
using (var aes = Aes.Create())
{
using (var encryptor = aes.CreateEncryptor(_key, aes.IV))
{
using (var ms = new MemoryStream())
{
using (var cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
{
using (var sw = new StreamWriter(cs))
{
sw.Write(text);
}
}
var iv = aes.IV;
var encrypted = ms.ToArray();
var result = new byte[iv.Length + encrypted.Length];
Buffer.BlockCopy(iv, 0, result, 0, iv.Length);
Buffer.BlockCopy(encrypted, 0, result, iv.Length, encrypted.Length);
return Convert.ToBase64String(result);
}
}
}
}
public static string Decrypt(string encrypted, string key)
{
var b = Convert.FromBase64String(encrypted);
var iv = new byte[16];
var cipher = new byte[16];
Buffer.BlockCopy(b, 0, iv, 0, iv.Length);
Buffer.BlockCopy(b, iv.Length, cipher, 0, iv.Length);
var _key = Encoding.UTF8.GetBytes(key);
using (var aes = Aes.Create())
{
using (var decryptor = aes.CreateDecryptor(_key, iv))
{
var result = string.Empty;
using (var ms = new MemoryStream(cipher))
{
using (var cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read))
{
using (var sr = new StreamReader(cs))
{
result = sr.ReadToEnd();
}
}
}
return result;
}
}
}
}
Вот мой код для использования класса шифрования / дешифрования
var name = "santu_ghosh";
var pword = "p@ssword";
string key = "E546C8DF278CD5931069B522E695D4F2";
var encnm = EncryptorDecryptor.Encrypt(name, key);
var encpwd = EncryptorDecryptor.Encrypt(pword,key);
Моя проблема в том, что я получаю разные значения для encnm (зашифрованное имя) и encpwd (зашифрованный пароль). Таким образом, этот алгоритм непригоден для моей цели.
Мое требование простое. Я хочу алгоритм шифрования (не обязательно AES или тройной DES), который выдает один и тот же вывод каждый раз в ядре Dot net. Так что я смогу сохранить это в appsettings.json, а также извлечь и расшифровать, и каждый раз, когда приложение запускается, я получаю один и тот же результат.
Заранее спасибо.