CryptoJS.enc.Base64.stringify() 和普通 Base64 加密的区别

2024-04-10

我正在尝试将以下哈希加密为 Base64:

6bb984727b8c8c8017207e54b63976dc42ea9d24ad33bd5feeaa66869b650096

需要访问网站的API。该网站显示了一个 JavaScript 示例脚本,使用CryptoJS.enc.Base64.stringify()加密哈希的方法。 该方法的结果是

a7mEcnuMjIAXIH5Utjl23ELqnSStM71f7qpmhptlAJY=

然而,我尝试过的每个在线 Base64 加密工具都会给出以下结果:

NmJiOTg0NzI3YjhjOGM4MDE3MjA3ZTU0YjYzOTc2ZGM0MmVhOWQyNGFkMzNiZDVmZWVhYTY2ODY5YjY1MDA5Ng==

我需要在 C++ 中创建编码字符串。我也已经尝试了 4 种不同的 base64encode 实现(OpenSSL 和自定义代码),但我也得到了上述结果,并且 API 总是回答我的字符串编码不正确。

那么区别在哪里,有人知道 C++ 的实现吗CryptoJS.enc.Base64.stringify()?


我们打电话吧

a = "6bb984727b8c8c8017207e54b63976dc42ea9d24ad33bd5feeaa66869b650096";
b = "a7mEcnuMjIAXIH5Utjl23ELqnSStM71f7qpmhptlAJY=";
c = "NmJiOTg0NzI3YjhjOGM4MDE3MjA3ZTU0YjYzOTc2ZGM0MmVhOWQyNGFkMzNiZDVmZWVhYTY2ODY5YjY1MDA5Ng==";

两种转换都是正确的,但取决于您实际想要的。

例如以下两个方程成立

toBase64FromBytes(toBytesFromUtf8(a)) == c
toBase64FromBytes(toBytesFromHex(a)) == b

信任某种在线计算器是一个坏主意,因为他们通常不会透露他们如何编码内容,所以你会得到任意结果。如果您自己编程,只要遵循文档,您就会得到预期的结果。

我怀疑你有a通过将哈希或加密结果打印到控制台,如下所示:

console.log(result.toString()); // a

Most resultCryptoJS 中的对象是WordArray类型。当您致电toString()在这样的对象上运行函数,您将获得该二进制对象的十六进制编码字符串。

如果您打印result.toString(CryptoJS.enc.Base64)然后您将获得二进制结果的 Base64 编码字符串。

如果你采取a并直接将其编码为Base64,那么可能假设a已经是一个字符串(例如 UTF-8 编码)。在线计算器不知道它是十六进制编码的。

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

CryptoJS.enc.Base64.stringify() 和普通 Base64 加密的区别 的相关文章

随机推荐

  • Flexbox:带有粘性页脚的可滚动内容

    我想制作一个盒子 在本例中为弹性项目 它始终位于容器的中间 在该框中 有页眉 页脚和内容部分 如果内容的高度变得太大 我希望内容部分可以滚动 页眉和页脚应始终可见 并且框应始终保留在其容器中 这是我能够写的内容 HTML div class
  • 如何跟踪 SSIS 数据流任务中成功处理或失败的行的状态?

    我有一个非常简单的数据流任务从 FF 读取数据并将数据插入表中 同时我想在审计表中写入 插入了多少行 创建日期 我怎样才能轻松做到这一点 如果您只对成功处理的行数或遇到错误的行数感兴趣 那么您可以使用内置的SSIS logging特征 请检
  • 使用 Omni Thread Library 在 Delphi 中异步获取函数结果

    我试图从另一个单元 类调用一个函数 这需要一些时间来执行任务并返回一个字符串值 我找不到类似于 C async await 的好的参考 比如 Delphi 中的简单方法 使用 Omni Thread 库对我来说似乎是个好主意 一个简单的例子
  • 在子目录(而不是根目录)中运行 Wordpress

    我有一个wordpress网站 当前运行在我网站的子目录中 基本上我的结构如下 根 wp 我想将 wordpress wp 文件夹保留在同一位置 但让它直接从根 url 加载 wordpress 网站 例如 当前当我访问 www mysit
  • 用于分析 Node.js 核心转储的工具 [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 如果我使用 gcore 制作 Node js 进程的代码转储 分析它的最佳工具是什么 灵感来自 jav
  • 为什么 TypeScript 不简化类型与其超类型之一的交集?

    有没有办法让 TypeScript 的检查器简化交集类型中不必要的元素 或者我错认为它们是不必要的 IIUC 类型SubType SuperType相当于SubType 但 typescript 似乎没有执行这种简化 如下所示 我定义了一个
  • 删除重复的SQL记录

    删除表中重复名称的记录的最简单方法是什么 我遇到的答案非常令人困惑 Related 从表中删除重复记录 https stackoverflow com questions 529098 removing duplicate rows fro
  • 使用 Maven 程序集插件创建 EAR [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我尝试使用
  • R Shiny - 如何使用第 2 列中的嵌套行生成此布局

    我想在 Fluid9 下有两行 但这不起作用 第一行应该有 3 个图 而第二行应该只有 1 个图 跨越第一行 3 个图的宽度 9 我缺少什么 我正在尝试得到类似的东西this http shinyprognostics de pemDemo
  • startActivityForResult() 已弃用用于 google 登录

    我想让谷歌登录我的应用程序 但我收到此错误 startActivityForResult deprecated in java 这是我的代码 val signInIntent googleSignInClient signInIntent
  • R 函数胶水与粘贴

    我最近发现了胶水包 经过一番研究后我不明白为什么glue glue应该优先于paste 根据这个网站 https cran r project org web packages glue vignettes speed html 胶水速度慢
  • Angular 2 相当于 ng-bind-html、$sce.trustAsHTML() 和 $compile?

    在 Angular 1 x 中 我们可以使用 HTML 标签实时插入 HTMLng bind html 结合JavaScript调用 sce trustAsHTML 这让我们完成了 80 的工作 但在使用 Angular 标签时不起作用 例
  • Xcode 中的构建和存档有什么区别

    我想构建一个框架 当我使用命令行构建和归档来编译项目时 结果是它们的大小不同 构建 比存档大得多 why 我使用的命令 xcodebuild target xx configuration Release clean build UFW A
  • 如何在 Perl 6 中追加到文件?

    我正在尝试这个和其他一些事情 但它每次都会截断文件 my file primes txt sub MAIN Int D low Int D high where gt low unless my fh open file w append
  • AngularJS $http.POST 方法 405 错误

    在 http post 方法中我遇到 405 问题 我们对 POST 和 GET 方法使用单一服务 REST 如果 url 具有 localhost 则它正在工作 urlAddScenario 是 localhost Service svc
  • 如何禁用全屏 HTML5 视频的默认控件?

    我有一个指定宽度和高度的视频 双击它可以使用全屏显示videoElement webkitRequestFullScreen 默认情况下 视频没有任何控件 但由于某种原因 在全屏显示时 会弹出默认控件 这就是我正在做的
  • 如何在 Pandas DataFrame 中将 替换为 NaN?

    我的 DataFrame 中的某些列有以下实例
  • Objective C - 在私有方法中对核心功能进行单元测试?

    我经历过很多情况 我的核心逻辑都在私有方法中 您将如何进行单元测试 是否有任何类型的编译时操作来忽略未知 私有方法的编译错误 我知道对于代码的第二部分 我可以使用 PerformSelector 但这是一个合理的解决方案吗 例如 self
  • 签署应用程序,但未在 Android 市场上发布

    Android 系统有一个名为 未知来源 的标志 允许其安装来自非市场来源的应用程序 如果我按照 Android 开发人员网站上的说明签署我的应用程序 即使用使用我从 google 获得的私钥创建的证书 并决定不在 Android 市场上发
  • CryptoJS.enc.Base64.stringify() 和普通 Base64 加密的区别

    我正在尝试将以下哈希加密为 Base64 6bb984727b8c8c8017207e54b63976dc42ea9d24ad33bd5feeaa66869b650096 需要访问网站的API 该网站显示了一个 JavaScript 示例脚