我想更改公共类中的返回值。
我想加密MD5。 我该怎么做。 我在msdn.microsoft.com上搜索过,但我没有。 :(
public string Password {
get { return SystemProccess.MD5Encrypt(Password); }
}
答案 0 :(得分:1)
看起来你可能有一个循环引用。您可能希望使用第二个属性,一个用纯文本设置密码,另一个用于获取加密密码。
public string Password { get; set; }
public string EncryptedPassword {
get { return GetMd5Hash(Password); }
}
我找到了以下用于从MSDN生成哈希的代码方法。 https://msdn.microsoft.com/en-us/library/system.security.cryptography.md5(v=vs.110).aspx。确保包含正确的命名空间。
using System;
using System.Security.Cryptography;
using System.Text;
然后将以下内容添加到您的班级。
static string GetMd5Hash(MD5 md5Hash, string input)
{
// Convert the input string to a byte array and compute the hash.
byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));
// Create a new Stringbuilder to collect the bytes
// and create a string.
StringBuilder sBuilder = new StringBuilder();
// Loop through each byte of the hashed data
// and format each one as a hexadecimal string.
for (int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));
}
// Return the hexadecimal string.
return sBuilder.ToString();
}
如果为了安全起见,如果您不想存储原始密码,可以使用setter。请注意,该属性使用私有字段来存储和访问加密值,因此不会存储原始的非加密密码。
private string _EncryptedPassword = null;
public string EncryptedPassword
{
get { return _EncryptedPassword ; }
set { _EncryptedPassword = GetMd5Hash(value); }
}
如果有帮助,请告诉我。