[英]String to UTF8 to SHA256 to BASE64
在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==
我对CryptoJS不太熟悉,但是我认为您输出的十六进制与base64不同。
生成与C#相同的结果, 请参见小提琴
var utf8arr = CryptoJS.enc.Utf8.parse("apassword");
var hash = CryptoJS.SHA256(utf8arr);
var base64 = CryptoJS.enc.Base64.stringify(hash);
console.log(base64);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.