CSharp - 如何使用 SQL Server 生成类似的哈希密码?

  显示原文与译文双语对照的内容
0 0

加密算法是 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 Server 代码生成密码时:

DECLARE @HashThis varchar(100);
SELECT @HashThis = CONVERT(varchar(100),'admin');
SELECT HASHBYTES('MD5', @HashThis);
GO

结果为:0x21232F297A57A5A743894A0E4A801FC3

我在用同样的算法。 如何在 SQL Server 中生成相同的哈希值?

时间:原作者:5个回答

0 0

Your的代码和SQL代码都计算相同的哈希值,但是SQL将结果格式化为十六进制字符串,而代码试图将哈希值直接转换为ASCII字符( 它们不是) 。 要在 C# 中获得相同的结果,你可以使用BitConverter类:

var shashed ="0x" + System.BitConverter.ToString(hashed).Replace("-","");

输出:

0x21232F297A57A5A743894A0E4A801FC3
原作者:
0 0

你是否已经根据表格的表格检查了结果

在大多数charactersets中,0 x21为,0 x23为 #, 等。

原作者:
...