我正在尝试将字符串转换为md5,我所做的是:
public static string MD5Hash(string input)
{
StringBuilder hash = new StringBuilder();
MD5CryptoServiceProvider md5provider = new MD5CryptoServiceProvider();
byte[] bytes = md5provider.ComputeHash(new UTF8Encoding().GetBytes(input));
for (int i = 0; i < bytes.Length; i++)
{
hash.Append(bytes[i].ToString("x2"));
}
return hash.ToString();
}
当我在md5hash(“mycode”)中测试时,上面的代码返回:6403df8223bf310152ad235731e79902(32个字符)
但是我的数据库上的md5是0x6403df823bf310152ad235731e79902000000000000000000000000000000000000064字符
它缺少了begginig中的“0x”和结尾中的“0”
4条答案
按热度按时间htrmnn0y1#
根据您的示例,在数据库中生成64个字符字符串的是:
我不会说出函数的名字
MS5Hash
在本例中,如您所见,数据库字符串是串联的字符串,md5散列只是每个字符串的中间部分。j8yoct9x2#
md5算法的哈希大小是128位。
md5类的computehash方法将哈希作为16字节的数组返回。请注意,一些md5实现产生32个字符的十六进制格式的哈希。
所以你必须检查数据库为什么你得到额外的字符?
供您参考,正确的md5值
MyCode
将是8e995273698f53088fe2ad4a0888d213下面是生成md5的代码。
参考文献:https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.md5?view=netcore-3.1#remarks
rjjhvcjd3#
这对我有用-
idv4meu84#
试试这个