小编典典

从字符串计算 MD5 哈希

all

我使用以下 C# 代码从字符串计算 MD5 哈希。它运行良好并生成一个 32 个字符的十六进制字符串,如下所示:
900150983cd24fb0d6963f7d28e17f72

string sSourceData;
byte[] tmpSource;
byte[] tmpHash;
sSourceData = "MySourceData";

//Create a byte array from source data.
tmpSource = ASCIIEncoding.ASCII.GetBytes(sSourceData);
tmpHash = new MD5CryptoServiceProvider().ComputeHash(tmpSource);

// and then convert tmpHash to string...

有没有办法使用这样的代码来生成 16 个字符的十六进制字符串(或 12 个字符的字符串)?一个 32
个字符的十六进制字符串很好,但我认为客户输入代码会很无聊!


阅读 55

收藏
2022-07-30

共1个答案

小编典典

根据MSDN

创建MD5:

public static string CreateMD5(string input)
{
    // Use input string to calculate MD5 hash
    using (System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create())
    {
        byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input);
        byte[] hashBytes = md5.ComputeHash(inputBytes);

        return Convert.ToHexString(hashBytes); // .NET 5 +

        // Convert the byte array to hexadecimal string prior to .NET 5
        // StringBuilder sb = new System.Text.StringBuilder();
        // for (int i = 0; i < hashBytes.Length; i++)
        // {
        //     sb.Append(hashBytes[i].ToString("X2"));
        // }
        // return sb.ToString();
    }
}
2022-07-30