如何公开字符串返回编辑文本?

时间:2016-12-01 20:54:34

标签: c# asp.net-mvc

我想更改公共类中的返回值。

我想加密MD5。 我该怎么做。 我在msdn.microsoft.com上搜索过,但我没有。 :(

        public string Password {
        get { return SystemProccess.MD5Encrypt(Password); }
    }

1 个答案:

答案 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); }
}

如果有帮助,请告诉我。