C# 在C中计算哈希SHA1#
在一个遗留系统中,我们有一个由以下人员在SQL Server中创建的密码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);
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 ServerHashBytes
函数在执行实际哈希之前将NCHAR
s和NVARCHAR
s转换为字节时使用UTF16