如何使用sql server生成类似的哈希密码
本文关键字:哈希 密码 何使用 sql server | 更新日期: 2023-09-27 18:24:26
加密算法是md5。
在C#中,我使用以下代码生成密码:-
private MD5 _md5;
var plain = ASCIIEncoding.Default.GetBytes('admin');
var hashed = _md5.ComputeHash(plain);
var shashed = ASCIIEncoding.Default.GetString(hashed);
Console.Write(shashed);
结果为:!#/)zW¥§C‰JJ€Ã
当我使用SQL服务器代码生成密码时:-
DECLARE @HashThis varchar(100);
SELECT @HashThis = CONVERT(varchar(100),'admin');
SELECT HASHBYTES('MD5', @HashThis);
GO
结果为:0x21232F297A57A5A743894A0E4A801FC3
我正在使用相同的算法。如何在SQL Server中生成相同的哈希值?
您的C#代码和SQL代码都在计算相同的哈希值,但SQL将结果格式化为十六进制字符串,而您的C#码正试图将哈希值的字节直接转换为ASCII字符(事实并非如此)。要在C#中获得相同的结果,可以使用BitConverter类:
var shashed = "0x" + System.BitConverter.ToString(hashed).Replace("-", "");
输出:
0x21232F297A57A5A743894A0E4A801FC3
您是否对照字符集表检查了结果;
在大多数字符集中,0x21是!,0x23是#等。