c# - 点网核心,密码学,我每次都为同一个字符串得到不同的加密值
问题描述
我正在尝试从 Asp.Net 核心应用程序存储和检索数据库登录的用户 ID/密码。由于这是敏感信息,我尝试过加密/解密。
这是我的加密/解密类。
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 core 中都提供相同的输出。因此,我将能够将其保存在 appsettings.json 中并检索和解密,并且每次应用程序运行时,我都应该得到相同的结果。
提前致谢。
解决方案
推荐阅读
- node.js - Puppeteer:无法打开并使用 Windows 文件对话框上传文件
- node.js - Node/WebpackDevServer/react-scripts,在启动时删除“To create a production build, use npm run build”消息
- facebook - Facebook 应用程序画布 setSize 和 setAutoGrow 在登录时不再工作
- swift - 将元素定位在导航栏正下方 (SwiftUI)
- etl - 如何在雪花中合并多行
- css - sap.ui.table.Table: visibleRowCountMode="Auto" 不适用于 VBox (FlexBox)
- arrays - ReactJS - 当我改变状态时,道具也会改变
- c - 在 C 中做一个单例
- bash - 如何在不遵循符号链接的情况下创建指向另一个符号链接的符号链接,同时保持相对路径?
- c++ - 在 if 语句中比较时 strrev 不起作用