我正在研究加密MD5,我在谷歌找到了这个代码
public string CalculateMD5Hash(string input) { // Primeiro passo, calcular o MD5 hash a partir da string MD5 md5 = System.Security.Cryptography.MD5.Create(); byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input); byte[] hash = md5.ComputeHash(inputBytes); // Segundo passo, converter o array de bytes em uma string haxadecimal StringBuilder sb = new StringBuilder(); for (int i = 0; i < hash.Length; i++) { sb.Append(hash[i].ToString("X2")); } return sb.ToString(); }
但为什么它使用ToString("X2")?ToString正常有什么区别?
它byte
以十六进制格式打印.
没有格式字符串:13
'X2'格式字符串:0D
http://msdn.microsoft.com/en-us/library/aa311428(v=vs.71).aspx
ToString("X2")以十六进制打印输入
它将字符串格式化为两个大写十六进制字符.
更深入地说,参数"X2"
是一个"格式字符串",它告诉ToString()
方法应该如何格式化字符串.在这种情况下,"X2"表示字符串应格式化为十六进制.
byte.ToString()
没有任何参数返回其自然十进制表示中的数字,没有填充.
Microsoft记录标准数字格式字符串,它通常适用于所有原始数字类型的ToString()
方法.同样的模式也用于其他类型:例如,可以使用标准日期/时间格式字符串DateTime.ToString()
.