2017-06-26 108 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);