我使用以下 C# 代码从字符串计算 MD5 哈希。它运行良好并生成一个 32 个字符的十六进制字符串,如下所示: 900150983cd24fb0d6963f7d28e17f72
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 个字符的十六进制字符串很好,但我认为客户输入代码会很无聊!
根据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(); } }