找到一个兄台的博文说明,在我的winform中很方便的使用起来了,记录一下。https://blog.csdn.net/qq_42799562/article/details/109547823
Context中的数据库明文被放了加密文本:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.UseSqlServer(DecryptKey("ytThAJe4KL6tB5VZETpR7zb3fma8VoPYy6F0Dv1zTvmS1/RR6fq5+F2FnYiVznY8998taPfbgL/WErMccw="));
}
}
用加密和解密MD5码,来处理明文的数据库连接字符串:
private static string Key
{
get
{
return @")O[NB]6,YF}+efcaj{+oESb9d8>Z'e9M";
}
}
/// <summary>
/// AESKey加密
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static string EncryptKey(string key)
{
//获取设置Rijndael算法密钥
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(Key);
//获取设置加密转换的字节数组
byte[] encryptArray = UTF8Encoding.UTF8.GetBytes(key);
//用于安全加密,Rijndael算法。
RijndaelManaged rDel = new RijndaelManaged();
//设置Rijndael算法密钥
rDel.Key = keyArray;
//设置Rijndael算法操作模式
rDel.Mode = CipherMode.ECB;
//设置Rijndael算法填充模式
rDel.Padding = PaddingMode.PKCS7;
//创建Rijndael算法加密对象
ICryptoTransform transform = rDel.CreateEncryptor();
//转换子节数组
byte[] resultArray = transform.TransformFinalBlock(encryptArray, 0, encryptArray.Length);
//返回8位无符号整数数组等效的字符串
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}
/// <summary>
/// AESKey解密
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static string DecryptKey(string key)
{
//获取设置Rijndael算法密钥
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(Key);
//将加密的字节数组转换8位无符号整数
byte[] decryptArray = Convert.FromBase64String(key);
//用于安全加密,Rijndael算法。
RijndaelManaged rDel = new RijndaelManaged();
//设置Rijndael算法密钥
rDel.Key = keyArray;
//设置Rijndael算法操作模式
rDel.Mode = CipherMode.ECB;
//设置Rijndael算法填充模式
rDel.Padding = PaddingMode.PKCS7;
//创建Rijndael解密对象
ICryptoTransform transform = rDel.CreateDecryptor();
//转换字节数组
byte[] resultArray = transform.TransformFinalBlock(decryptArray, 0, decryptArray.Length);
//返回子节转数组字符串
return UTF8Encoding.UTF8.GetString(resultArray);
}
}