编写代码生成 MD5 哈希:
public static string ToMD5(this string v)
{
StringBuilder hashString = new StringBuilder();
using (MD5 hash = MD5.Create())
{
byte[] md5 = hash.ComputeHash(Encoding.UTF8.GetBytes(v));
for (int i = 0; i < md5.Length; i++)
{
hashString.Append(md5[i].ToString("X2"));
}
}
return hashString.ToString();
}
有一个GetBytes()函数,如果要hash的文本很大,这个地方会不会出现栈溢出
如果创建字节 a = new byte[99999999999],则会抛出 OverflowException:算术运算导致溢出。
不会有堆栈溢出,因为它分别
GetBytes()返回byte[],在堆栈上只有对数组的引用,而不是整个数组。导致不是堆栈溢出,而是堆溢出。