2017-06-26 104 views
0

在C#中,我有以下代码:字符串为UTF8到SHA256为Base64

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

+0

您可以将每个的例子输出? – evolutionxbox

+0

而不是一个衬垫,分开做每一步,所以你可以看到确切的差异在哪里。 – Crowcoder

+0

我已经添加了示例 – ChristoK

回答

0

我没那么熟悉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);