C# 在C中计算哈希SHA1#

C# 在C中计算哈希SHA1#,c#,sha1,password-encryption,C#,Sha1,Password Encryption,在一个遗留系统中,我们有一个由以下人员在SQL Server中创建的密码 select HashBytes('SHA1' , Convert(nvarchar(4000),'MyPassword')) 现在,由于许多非功能性需求,我们必须在C#中计算相同的密码 我的最佳尝试是: public static byte[] CalculateSHA1(string text) { byte[] buffer = UTF8Encoding.Default.GetBytes(text);

在一个遗留系统中,我们有一个由以下人员在SQL Server中创建的密码

select HashBytes('SHA1' , Convert(nvarchar(4000),'MyPassword'))
现在,由于许多非功能性需求,我们必须在C#中计算相同的密码

我的最佳尝试是:

public static byte[] CalculateSHA1(string text)
{
    byte[] buffer = UTF8Encoding.Default.GetBytes(text);
    SHA1CryptoServiceProvider cryptoTransformSHA1 = new SHA1CryptoServiceProvider();
    return cryptoTransformSHA1.ComputeHash(buffer);
}
但它返回的字节数组与SQL代码返回的字节数组不同


有人可以帮我吗?

UTF8Encoding.Default
更改为
Encoding.Unicode
,结果将匹配。SQL Server
HashBytes
函数在执行实际哈希之前将
NCHAR
s和
NVARCHAR
s转换为字节时使用UTF16