CryptoJS 和 Closure 中的 SHA512 不一样

2024-01-08

我在一个简单的加密挑战中遇到了一些麻烦。

我想做以下事情:

  • 获取 url 编码和 base64 编码的值
  • 进行 url 解码
  • 进行 Base64 解码
  • 使用 Sha512 进行哈希处理

使用 CryptoJS 时,我使用以下代码:

var parameter = "Akuwnm2318kwioasdjlnmn";
var urlDecoded = decodeURIComponent(parameter);
var base64Decoded = CryptoJS.enc.Base64.parse(urlDecoded);
var hashed = CryptoJS.SHA512(base64Decoded).toString(CryptoJS.enc.Base64);
//hashed = "UxupkI5+dkhUorQ+K3+Tqct1WNUkj3I6N76g82CbNQ0EAH/nWjqi9CW5Qec1vq/qakNIYeXeqiAPOVAVkzf9mA=="/eWTS2lUgCEe6NJDXhNfYvXMRQDvH6k2PHVmy6LJS7RloVvcQcpVjRNVU5lJpAg=="

使用 Closure 时,我使用以下代码:

var parameter = "Akuwnm2318kwioasdjlnmn";
var urlDecoded = decodeURIComponent(parameter);
var byteArray = goog.crypt.base64.decodeStringToByteArray(urlDecoded);
var base64Decoded = goog.crypt.byteArrayToHex(byteArray);
var sha512 = new goog.crypt.Sha512();
sha512.update(base64Decoded);
var hashed = sha512.digest();
hashed = goog.crypt.byteArrayToHex(hashed);
//hashed = "bc2a878edfffb0937fbc6c0f9dbc9566edc59b74080d68d4c8bdfeb4027f17c4316a02285baaf446872d2df37b1144ac3ce18d62ab9c786b1f1fb18a53acea1d"

那么,为什么哈希值不同呢?

如果有人能告诉我如何调整 Closure-Code,以获得与 CryptoJS 代码提供的相同的哈希值,我将非常高兴。

多谢!

PS:

我也尝试过:

var parameter = "Akuwnm2318kwioasdjlnmn";
var urlDecoded = decodeURIComponent(parameter);
var base64DecodedByteArray = goog.crypt.base64.decodeStringToByteArray(urlDecoded);
var sha512 = new goog.crypt.Sha512();
sha512.update(base64DecodedByteArray);
var hashed = sha512.digest();
hashed = goog.crypt.byteArrayToHex(hashed);
//hashed = "531ba9908e7e764854a2b43e2b7f93a9cb7558d5248f723a37bea0f3609b350d04007fe75a3aa2f425b941e735beafea6a434861e5deaa200f3950159337fd98"

但是,正如你所看到的,我得到了另一个哈希值。为什么??


第一个哈希值与第三个哈希值相同,只是它是 Base64 编码而不是十六进制编码。您可以更改为十六进制编码并获得相同的值:

var hashed = CryptoJS.SHA512(base64Decoded).toString(CryptoJS.enc.Hex);
//hashed = "531ba9908e7e764854a2b43e2b7f93a9cb7558d5248f723a37bea0f3609b350d04007fe75a3aa2f425b941e735beafea6a434861e5deaa200f3950159337fd98"

您展示的第二种方法具有不同的值,因为您没有对相同的数据进行哈希处理;相反,您将 byteArray 转换为十六进制字符串,然后对该字符串表示形式进行散列,而不是基础值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CryptoJS 和 Closure 中的 SHA512 不一样 的相关文章

  • 如何将一个表单的文件上传字段中的值复制到另一个表单的文本字段?

    我有一页上有两种不同的表格 第一个表单允许用户上传图像文件并通过电子邮件发送 第二个表单根据用户输入生成 URL 为了将图像名称添加到 URL 我需要在第二个表单中有一个字段 该字段从第一个表单的字段中复制图像名称 我不想让用户浏览并选择图
  • 使用 Jquery 附加链接

    我正在尝试根据您所在的页面添加指向我的页面的链接 我使用 Squarespace 来构建这个网站 因此对我来说最简单的方法是使用 Javascript 或 Jquery 我认为我缺少的这个语法有问题 我已经尝试用 来打破引号 但这不起作用
  • 无法在 IE 中的选择选项上使用 onmouseover 事件

    更新的代码 function getElements var x document getElementsByTagName option var el document getElementById selectDept el onmou
  • Chrome 开发工具:无需切换到“源”选项卡即可进入调试器

    如果我把debugger https developer mozilla org en US docs JavaScript Reference Statements debugger当 Chrome 开发工具打开时 我的 JavaScri
  • 如何翻转 Twitter Bootstrap 的工具提示

    我正在使用 Twitter 的 Bootstrap 来实现工具提示 目前 工具提示显示在链接上方 我希望工具提示出现在链接下方 我该怎么做呢 我正在触发工具提示 它明确指出 底部 但它不想为我工作 tooltip tooltip place
  • 是否可以进行条件解构或有后备?

    我有一个具有许多深层嵌套属性的对象 我希望能够访问 MY KEY 上的属性 如下 但如果该属性不存在 则获取 MY OTHER KEY 我怎样才能做到这一点 const X Y MY KEY Values segments segment
  • 将字符串(是一个函数)转换回 Javascript 中的函数

    我在下面将此函数作为字符串 我如何将其转换回函数 我正在从 JQuery 事件中提取事件处理程序 我想将它们存储为字符串 然后将它们转换回来 因为它们将保存在 mySQL 中 function if GActiveClick return
  • 如何避免 TypeScript 中出现虚假的“未使用参数”警告

    我遇到过很多次这种情况 最后决定弄清楚正确的方法是什么 如果我有一个声明方法的抽象父类 然后一些具体子类在其实现中实现真正的逻辑 并且显然使用方法参数 但某些子类不需要在该方法中执行任何操作 因此不要使用方法参数 那些不必执行任何操作的方法
  • Next.js:如何将 source-map-explorer 与 Next.js 一起使用

    我想分析我的 Next js 构建源地图浏览器 https www npmjs com package source map explorer 有人可以帮我编写脚本吗 对于 React CRA 我使用以下脚本 build analyze n
  • 可选回调的 JavaScript 样式

    我有一些函数偶尔 并非总是 会收到回调并运行它 检查回调是否已定义 函数是一种好的风格还是有更好的方法 Example function save callback do stuff if typeof callback undefined
  • 如何更改元素的 CSS 类并在单击时删除所有其他类

    我如何处理 AngularJS 2 中的一种情况 即单击一个元素需要更改其自己的样式 并且如果其他元素具有该样式 则需要将其删除 最好在一个函数中 如同Angular js 如何在单击时更改元素 css 类并删除所有其他元素 https s
  • Onblur 事件在另一个 div 的 onclick 之前触发

    如上所述 我有一个按钮 单击该按钮将打开子菜单 对于子菜单中的每个选项 都有三个元素 我认为实际上还有更多元素 但为了简单起见 将其保留为 3 我将焦点放在子菜单的主 div 白色 框架 上 Onblur 这个 div 然后我隐藏子菜单 这
  • 如何显示 GroupList 的 FormArray?

    我正在尝试制作一个交互式表单 在每一行上列出一个项目以及一个删除按钮 在我的示例中称为 verwijderen 这些项目是从数据库中检索的 并且每个项目都实例化为名为的自定义对象LaborPeriod 然后这些对象被转化为FormGroup
  • 适用于多应用项目的 Grunt 和 requirejs 优化器

    我在让 Grunt 对具有以下结构的项目执行 requirejs 优化时遇到问题 static js apps app js dash js news js many more app files build collections lib
  • 什么是 TinyMCE jQuery 包?

    我被要求在项目中使用 TinyMCE 编辑器 在下载页面上 有一个主包 然后是一个 jQuery 包 This package contains special jQuery build of TinyMCE and a jQuery in
  • 有没有办法从画布上清除一个元素而不消除其他元素?

    我正在使用画布构建页面加载器 并使用 es6 类 虽然目前我无法使其正常工作 原因之一是我找不到清除画布的方法进展 到目前为止 这是我的代码 class Loader constructor width height this width
  • 使用 javascript/jquery 从数据库格式化日期的正确方法

    我正在调用包含日期时间数据类型的数据库 日期看起来像这样 2005 05 23 16 06 00 000 当用户从列表中选择某个项目时 我想在表格中显示它 我调用我的控制器操作并返回所有时间的 Json 并将它们放入表中 问题是日期完全错误
  • 如何在 Firefox 插件中追加到文件?

    var tabs require sdk tabs var iofile require sdk io file var widgets require sdk widget var selection require sdk select
  • 如何调试 Node.js 应用程序?

    如何调试 Node js 服务器应用程序 现在我主要使用警报调试打印语句如下 sys puts sys inspect someVariable 一定有更好的调试方法 我知道谷歌浏览器 http en wikipedia org wiki
  • JavaScript 中“键”的类型是什么?

    当我失去焦点并开始思考一个愚蠢的问题时 我遇到了这样的时刻 var a b value b 的类型是什么 我的意思不是 值 的类型 而是标记为 b 的实际键 背景 当我必须创建一个字符串键时 我开始想知道这一点 var a b value

随机推荐

  • C#中如何判断数字是否可被整除?

    我需要知道如何执行此程序 calculation1 1 4 0 25 calculation2 1 8 0 125 calculation3 47 183 0 25683060109289617486338797814207 calcula
  • 图数据库新手Q-如何决定2个节点之间关系的方向

    你如何决定关系的动词方向 例如 我有一个国家属于子区域 而子区域又属于区域 哪一个更好 在决定方向方面有什么经验法则吗 地区 HAS gt 子区域 HAS gt 国家 地区 or 区域 问候 桑 我同意 InverFalcon 的观点 即方
  • 无法在 spring-boot 应用程序中从 Consul 读取配置

    我正在创建一个Spring Boot应用程序 它将读取诸如数据库属性之类的配置Consul 但我无法使用我的应用程序从 Consul 读取键值 以下是我正在尝试做的事情 pom xml
  • System.UnauthorizedAccessException:对路径的访问被拒绝

    无论我做什么 例如授予网络服务和 ASP NET 帐户对包含图像的文件夹的完全权限 我仍然收到 System IO File Move 的此错误 有人知道我在这里可能还缺少哪些其他帐户吗 网络服务是运行应用程序池的帐户 该网站在该应用程序池
  • 使用python检测关闭事件

    我有一个 Minecraft 基岩版服务器在我们的共享电脑上运行 我想通过 python 与它交互 然而 我遇到的一个问题是我的兄弟有时会重新启动我们的电脑或 Windows 更新 我需要知道如何检测关闭事件并在重新启动之前将关闭命令发送到
  • Html5 标题标签验证错误

    您好 我正在根据 html 5 验证我的源代码 但我收到此错误 现在知道如何解决它 这是错误 在此上下文中 不允许 XHTML 元素标题作为 XHTML 元素元的子元素 抑制该子树中的更多错误 有任何想法吗 在对 XML 规则严格的 XHT
  • %g 如何对浮点数进行四舍五入?

    当我使用时 g作为格式说明符printf 有时四舍五入到小数点后 2 位 有时到 3 位 有时到 4 位 它是如何做到的 实际上我们应该在哪里使用 g代替 f or e对于浮点数 The g格式说明符的舍入就像 f会做 但如果 f会导致4
  • 在 PHP 中查找仅包含特定字符集的数组元素

    我只需要查找具有一组特定字母以及该组字母之前或之后的任何字符的数组元素 我有这样的数组 sample array sten netff enet denet value array e n t 我需要从中找到值 sample数组有 e n
  • 应用程序无响应(ANR)执行服务android

    host activity 是我的包 host framework ServicePromemoria 是一个android 服务 这个错误是什么意思 这意味着您的服务正在执行相当长的操作 大多数 ANR 来自超过 5 秒的操作 并且是在
  • PHP + MYSQL 对 Duplicate KEY 仍然增加 INDEX KEY

    我的桌子有这种风格 ID EMAIL VERSION LASTUPDATE 其中 id 是自动增量并且主要 并且电子邮件是唯一的 因此 每次有人使用我的应用程序时 它都会获取用户电子邮件并尝试插入 如果电子邮件已存在 则会将该行更新为 ve
  • 自动重试 401 并使用 HttpClient 4.3 发送特定请求

    我在应用程序中使用特定的身份验证机制 登录应用程序将登录请求发送到特定的 url login 并获取存储在 cookie 中的会话令牌 服务器随时可以使令牌失效 其他请求将导致 401 我希望 HttpClient 自动检测 401 错误
  • UITableViewController 上的上边距

    我有一个 TabBarController 其中一个选项卡包含一个子视图 它是一个导航控制器 然后 我将继承 UITableViewController 的视图加载到导航控制器中 我的问题是 由于某种原因 表格视图开始位于导航控制器后面 而
  • vuejs 路由器 - 要求未定义

    我正在尝试从这个开始 https github com vuejs vue router https github com vuejs vue router 我已经克隆了该包 并按照说明进行构建 npm install npm run bu
  • 实体框架 6 中的多异步?

    这是我的代码 var banner context Banners ToListAsync var newsGroup context NewsGroups ToListAsync await Task WhenAll banner new
  • 在 Swift 4 中实现自定义解码器

    我想使用新的解码 XML 文档DecodableSwift 4 中引入的协议 但是 似乎没有符合该协议的 XML 解码器的现有实现Decoder协议 我的计划是使用 SWXMLHash 库来解析 XML 然后可能使XMLIndexer该库中
  • 为什么选择 React.Children.only?

    向反应专家提出快速问题 React Children only https reactjs org docs react api html reactchildrenonly是它的顶级 api 之一 react redux 非常常用
  • 是否可以通过AWS lambda连接到本地计算机托管的数据库

    我在 AWS 中启动了一个 RDS 实例 s3 和 EC2 并且使用 lambda 正确触发了它 现在我希望将 RDS 和 EC2 从 AWS 更改为本地计算机 我的 lambda 是从 s3 触发的 在AWS中如何通过lambda连接本地
  • 来自事件的流星地理定位方法

    我想获取 latLng 但只能在事件发生后获取 如何才能实现这一目标 我尝试过跟踪器等 但没有任何效果 唯一有效的是调用 Geolocation latLng 从事件之前的助手内部 这就是我希望它能发挥作用的方式 我对 Session se
  • Sones GraphDB 查询返回错误

    我在这里关注他们的教程 http developers sones de wiki doku php id quickreference 五分钟指南 http developers sones de wiki doku php id qui
  • CryptoJS 和 Closure 中的 SHA512 不一样

    我在一个简单的加密挑战中遇到了一些麻烦 我想做以下事情 获取 url 编码和 base64 编码的值 进行 url 解码 进行 Base64 解码 使用 Sha512 进行哈希处理 使用 CryptoJS 时 我使用以下代码 var par