javascript - 字符串转 UTF8 转 SHA256 转 BASE64

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

最佳答案

我对 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);

关于javascript - 字符串转 UTF8 转 SHA256 转 BASE64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44756706/

相关文章:

javascript - Gmail 类似搜索组件

java - 从代码片段中检测编程语言

javascript - 填充空数组

c# - 如何在 Mono HTTPListener 服务器中捕获 SSL 异常?

C# 从注册表中获取不带参数的值

c# - XmlException : The input document has exceeded a limit set by MaxCharactersFromEntities

javascript - Select2 - 使用 AJAX 未在下拉列表中列出结果

c# - 使用隧道而不是冒泡的 RoutedCommands

c# - 如何在 defaultProxy 配置设置中传递凭据?

c# - 无法在单元测试中复制 'cross-thread operation not valid' 错误 - 我不明白