c# - JavaScript 哈希和等效的 .NET 算法

标签 c# javascript asp.net vb.net hash

使用this code在 JavaScript 端和

    Using sha As New SHA256Managed
        Using memStream As New MemoryStream(Encoding.ASCII.GetBytes("Hello World!"))
            Dim hash() As Byte = sha.ComputeHash(memStream)
            Dim res As String = Encoding.Default.GetString(hash)
        End Using
    End Using

我无法使用这两位代码为相同的值重新创建相同的哈希值。

JavaScript 实现返回 7f83b1657ff1fc53b92dc18148a1d65dfc2d4b1fa3d677284addd200126d9069 ,VB.NET 示例返回 ƒ±eñüS¹-ÁH¡Ö]ü-K£Öw(JÝÒ mi" .

我错过了什么?我认为这与字符编码有关?

解决方案:这是一个简单的更改:

    Using sha As New SHA256Managed
        Using memStream As New MemoryStream(Encoding.ASCII.GetBytes("Hello World!"))
            Dim hash() As Byte = sha.ComputeHash(memStream)
            Dim res As String = BitConverter.ToString(hash)
        End Using
    End Using

最佳答案

您将 hash 数组视为 ASCII 字符序列。您需要十六进制表示形式,可以使用 BitConverter.ToString 获得它,像这样:

Dim res As String = BitConverter.ToString(hash).Replace("-", "").ToLower();

关于c# - JavaScript 哈希和等效的 .NET 算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4849518/

相关文章:

javascript - 你如何测试有延迟的 Angular promise ?

javascript - 如何等待异步方法的回调返回值?

javascript - 每次用户键入时调用函数

javascript - 搜索在 Gridview 上不起作用

c# - 如何确定由 Google 翻译翻译的网页的新语言?

c# - 没有 ID 和名称的 GetElementById 如何?

c# - Dictionary<Guid, Guid> 从 C# 中的 appsettings.json 映射

c# - 如何在 Asp.Net MVC Razor 中创建 'generic' 控件?

c# - .Text 在 Selenium PhantomJS C# 中不起作用

c# - 数据列表中的复选框列表