我需要存储将与 system.net.mail 一起使用的电子邮件密码。这些需要以纯文本形式检索和发送,但我不想将它们存储为纯文本。这与 Intranet 的安全性无关,我只是不希望结果在 CMS 中以纯文本形式显示。
我读过很多文章说应该使用 SHA1 来存储密码。从我读过的内容来看,散列并不好,因为无法检索纯文本。
我目前正在尝试这种方法:
public static string EncodePasswordToBase64(string password)
{
try
{
byte[] encData_byte = new byte[password.Length];
encData_byte = System.Text.Encoding.UTF8.GetBytes(password);
string encodedData = Convert.ToBase64String(encData_byte);
return encodedData;
}
catch (Exception ex)
{
throw new Exception("Error in base64Encode" + ex.Message);
}
}
和
public static string DecodeFrom64(string encodedData)
{
System.Text.UTF8Encoding encoder = new System.Text.UTF8Encoding();
System.Text.Decoder utf8Decode = encoder.GetDecoder();
byte[] todecode_byte = Convert.FromBase64String(encodedData);
int charCount = utf8Decode.GetCharCount(todecode_byte, 0, todecode_byte.Length);
char[] decoded_char = new char[charCount];
utf8Decode.GetChars(todecode_byte, 0, todecode_byte.Length, decoded_char, 0);
string result = new String(decoded_char);
return result;
}
但我似乎无法在我的数据库中找到正确的数据类型来存储值。它当前设置为nvarchar(MAX)。
单元格内容显示如下(每个值之间有空格):
QXB j LWV w MXB =
奇怪的是,当我单击并输入单元格以复制数据时,我得到的只是:
问
我应该为此列使用什么数据类型?