从UTF8到SHA256到BASE64的字符串

时间:2017-06-26 09:33:14

标签: javascript c# .net typescript

在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==

1 个答案:

答案 0 :(得分:1)

我对CryptoJS并不熟悉,但我认为你输出的是与base64不同的hex。

这会产生与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);