与C#中的javascript类似的加密代码

时间:2018-12-03 12:35:03

标签: javascript c# hash base64 sha256

我使用一些远程api,它们使用以下C#代码:

SHA256Managed sha256Managed = new SHA256Managed();
byte[] passwordSaltBytes = Encoding.Unicode.GetBytes("zda");

byte[] hash = sha256Managed.ComputeHash(passwordSaltBytes);

string result = Convert.ToBase64String(hash);

Console.WriteLine("result = " + result); // result = NUbWRkT8QfzmDt/2kWaikNOZUXIDt7KKRghv0rTGIp4=

我需要在我的javascript前端代码中获得相同的结果。有人可以帮助解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

答案是:

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

答案 1 :(得分:0)

不太明显,但是Unicode in C# is using UTF-16LE enconding

因此您可以使用CryptoJS达到相同的结果:

var utf16 = CryptoJS.enc.Utf16LE.parse("zda");
var hash = CryptoJS.SHA256(utf16);
var base64 = CryptoJS.enc.Base64.stringify(hash);
console.log(base64);