在asp和.net中中文经过md5加密的值如何处理让两个加密后值相同?

我对“张”进行加密得到这两个不同的值:
pass: .net md5 : 6499fc7409049355527ef6a2ba5706b8
pass: asp md5 : 735ba5838eb87f49d2bd66ad8b46a9b9
最新回答
小晴日记

2024-05-31 00:00:36

在asp和asp.net中md5 Hash英文结果相同,但hash中文时会出现结果不同的情况。
这是由于asp默认加密是按GB2312,而asp.net默认是按UTF-8,这样两者的结果就不同了。

在asp.net中可以很方便的修改代码采用GB2312计算MD5,在asp中可以采用修改asp文件编码的方式来实现utf-8 md5。转换asp文件编码方式工具很多,ultraedit或convertZ都可以方便转换。
佐佐木惠理

2024-05-31 00:00:26

编码不同,没必要使用两个加密方法。后做的系统完全可以直接用将表单内容提交到原有系统然后加密对比。
柠檬味的菇凉

2024-05-31 00:00:20

public static string GetMD5(string s)
{

/// <summary>
/// 与ASP兼容的MD5加密算法
/// </summary>

MD5 md5 = new MD5CryptoServiceProvider();
byte[] t = md5.ComputeHash(Encoding.GetEncoding("gb2312").GetBytes(s));
StringBuilder sb = new StringBuilder(32);
for (int i = 0; i < t.Length; i++)
{
sb.Append(t[i].ToString("x").PadLeft(2, '0'));
}
return sb.ToString();
}