c# - 如何在 ASP.NET 网络表单中存储密钥
问题描述
我需要加密/解密用户输入的一些数据并将密文显示给用户......经过一些小型研究后,我发现了一个很好的教程,它以非常清晰的方式显示了加密/解密。(下方链接)
但是我担心的是在本教程中,他直接在代码中公开了私钥。我知道这段代码在后端是安全的(不会暴露给最终用户)。但是,如果没有,是否有更好的方法来保护/存储此密钥,是否将密钥安全地直接保存在后端代码中?
private string Encrypt(string clearText)
{
string EncryptionKey = "MAKV2SPBNI99212";
byte[] clearBytes = Encoding.Unicode.GetBytes(clearText);
using (Aes encryptor = Aes.Create())
{
Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
encryptor.Key = pdb.GetBytes(32);
encryptor.IV = pdb.GetBytes(16);
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateEncryptor(), CryptoStreamMode.Write))
{
cs.Write(clearBytes, 0, clearBytes.Length);
cs.Close();
}
clearText = Convert.ToBase64String(ms.ToArray());
}
}
return clearText;
}
我想指出我已经做了一些研究,但由于大多数结果都与“Azure Key vault”有关,这对我们的案例不起作用。
解决方案
推荐阅读
- canvas - Konva.js - 如何获取组中对象的位置
- python - 切换到新计算机后,协程从未等待
- php - 如何从 ReactPHP\Promise\Promise 中“提取”数据?
- angular - Angular 2+在地址栏中由用户手动更改时替换URL中的参数
- javascript - 如何更改 vaadin-select 中 [part="toggle-button"] 的颜色?
- tensorflow - 即使指定了种子,tf.random.shuffle 也没有给出可重现的结果
- reactjs - Material-ui v4无法为每个组件读取未定义的属性“根”
- html - 图像 z-index onhover 多 SVG 多边形
- html - 为什么 css 不能在 ion-header、ion-toolbar 和 ion-icon 上工作?
- java - 我们可以使用 aspose api 来识别节号吗?与页码。在java中的doc文件中