【问题标题】:Computing hash SHA1 in C# [duplicate]在 C# 中计算哈希 SHA1 [重复]
【发布时间】:2014-03-27 22:04:37
【问题描述】:

在旧系统中,我们在 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 代码返回的不同。

有人可以帮助我吗?

【问题讨论】:

    标签: c# sha1 password-encryption


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-08
      • 2013-05-11
      • 2015-04-13
      • 2014-02-07
      • 2012-12-02
      • 2020-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多