【问题标题】:String to UTF8 to SHA256 to BASE64字符串到 UTF8 到 SHA256 到 BASE64
【发布时间】:2017-06-26 19:48:25
【问题描述】:

在 C# 中,我有以下代码:

public static string GetHashCode(string p)
    {
        var a = new SHA256Managed();
        return Convert.ToBase64String(a.ComputeHash(new System.Text.UTF8Encoding().GetBytes(p)));
    }

我必须在 Javascript 中实现相同的目标,我尝试了以下方法,但结果不同:

btoa((CryptoJS.SHA256(this.toUTF8Array(this.settingsService.Password)).toString(CryptoJS.enc.Hex)));

我该怎么办,怎么了?

字符串“aaa”的示例输出: C#:1f9e1d76685d765aa3a6ff85dced2f0a04f612536df52696684aaa67787e6cdd js:NGVhNWM1MDhhNjU2NmU3NjI0MDU0M2Y4ZmViMDZmZDQ1Nzc3N2JlMzk1NDljNDAxNjQzNmFmZGE2NWQyMzMwZQ==

【问题讨论】:

  • 你能添加每个示例输出吗?
  • 不是一个衬垫,而是单独执行每一步,这样您就可以准确地看到不同之处。
  • 我添加了示例
  • 我一步一步做的,computehash()部分有区别

标签: javascript c# .net typescript


【解决方案1】:

我对 CryptoJS 不太熟悉,但我认为您输出的十六进制与 base64 不同。

这会产生与 C# see fiddle 相同的结果

var utf8arr = CryptoJS.enc.Utf8.parse("apassword");
var hash = CryptoJS.SHA256(utf8arr);
var base64 = CryptoJS.enc.Base64.stringify(hash);
console.log(base64);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-22
    • 2018-12-28
    • 1970-01-01
    • 2017-01-05
    • 1970-01-01
    • 1970-01-01
    • 2014-11-29
    • 2020-11-21
    相关资源
    最近更新 更多