为什么使用 sha1/sha256 哈希进行 Base64 处理?

2024-01-01

谁能告诉我为什么亚马逊想要 hmac-sha1/sha256 哈希值的 base64 ?

http://docs.amazonwebservices.com/AmazonSimpleDB/latest/DeveloperGuide/HMACAuth.html http://docs.amazonwebservices.com/AmazonSimpleDB/latest/DeveloperGuide/HMACAuth.html

我知道 base64 是表示 ascii 中的二进制日期,但 sha1/sha256 已经是 ascii - 我的意思是它唯一的十六进制。

Thanks

Timo


这些哈希值不是 ASCII——您看到十六进制数字的原因是因为您用来生成它们的软件获取摘要的二进制输出并将其转换为十六进制数字的 ASCII 字符串。

例如,MD5 摘要将填充 16 字节的数组。您还可以将其表示为 32 个字符的字符串,但摘要的最基本形式仍然是字节数组。

将字节数组更改为十六进制字符串时,需要 8 位(一个完整字符)来表示每 4 位数据。尽管不经常这样调用,但您可以说它使用“base16”编码,因为您一次抓取 4 位并将它们映射到 16 个字符的字母表。

另一方面,Base64 一次抓取 6 位并将它们映射到 64 个字符的字母表。这意味着您需要 8 位(同样是一个完整字符)来表示每 6 位数据,这相当于 Base16 浪费位的一半。 Base16 编码的字符串始终是原始字符串的两倍; Base64 编码的字符串只有三分之四大。对于 SHA256 哈希,base16 占用 64 个字节,但 base64 占用大约 43 个字节。

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

为什么使用 sha1/sha256 哈希进行 Base64 处理? 的相关文章

随机推荐

  • 如何将 UserDefinedType(UDT) 与 Spring Data Cassandra 用于 List

    我在 cql 中创建了一个名为 widgetData 的 UDT 我有一个名为 widgetData 的相应 POJO 类 我想在另一个域 POJO 类中使用它作为 List 应该使用什么样的注释来做到这一点 Table dashboard
  • Django动态表单示例

    我有一个在 Django 中创建动态表单的简单要求 我已经看过很多示例 但它们似乎不完整 或者需要比我更广泛的 Python 和 Django 知识 没有显示如何调用示例的动态部分 这是带有 Q1 和 Q2 的表单类 我在表单上放置一个按钮
  • 在 AndroidManifest.xml 中设置 screenOrientation 不起作用

    我有一个简单的 hello world Android 测试项目 在我的 AndroidManifest xml 中 我已经设置 android screenOrientation portrait android configChange
  • 布尔“not”函数的函数组合(不是布尔值)

    我正在 TS 中工作 但会在下面显示 tsc gt ES6 代码 我有一个函数 isDigit 如果字符代码在数字 0 9 范围内 则该函数返回 true 该函数 isDigit 必须作为参数传递到高阶函数中 const isDigit c
  • 如何从文件中绘制对象(矩形)

    在 gnuplot 中我可以通过绘制一个矩形 set object rect from x0 y0 to x1 y1 如何从文件中读取坐标x0 x1 y0 y1 一种方法是将设置矩形的代码行放入一个单独的文件中 并从 gnuplot 脚本中
  • JAX-RS 响应的 HTTP 状态为 500,而不是 HTTP 状态 400

    有时 JAR RS 客户端会发送错误的语法请求正文 服务器应响应HTTP 状态 400 错误请求 https www rfc editor org rfc rfc7231 section 6 5 1 但它的响应是HTTP 状态 500 内部
  • 在 Vim 中计算出现次数而不标记缓冲区已更改

    为了知道当前缓冲区中某个模式存在多少次 我这样做 s pattern here pattern here g 它给出了模式出现的次数 但显然很麻烦 并且还具有设置 已更改 状态的副作用 有没有更优雅的计数方式 为了避免替换 请将第二个模式留
  • 陷入 C# 正则表达式困境

    我的数据库中的字段中包含以下文本 quote 5a7b87febe mr smith This is some text This is more text on another line quote 5a7b87febe 我正在尝试构建一
  • 将 Java 对象转换为 XML 时的 XStream 撇号问题

    我在用com thoughtworks xstream XStream生成 xml 字符串 我将对象解析为 xstream toXML方法 我根据我需要的方式获得 xml 输出
  • ggplot 更改 x 轴标签而不更改基础数据

    我在 x 轴上绘制小平面和离散数据 如何更改 x 轴标签without改变底层数据 IE 而不是标签阅读 a b c d 他们应该阅读 Lab 1 Lab 2 Lab 3 Lab 4 df lt data frame x factor re
  • 邮件枪 - 401 禁止

    我尝试使用 mailgun 发送电子邮件 我使用 node js nest js 这是我的邮件服务 我应该改变什么 当我尝试发送第一封电子邮件 mailgun 官方网站上的说明 时 我收到了相同的错误消息 import Injectable
  • 哪个“if”结构更快 - 语句还是三元运算符?

    有两种类型ifjava 中的语句 经典 if else 和简写 exp value1 value2 一个比另一个快还是它们相同 陈述 int x if expression x 1 else x 2 三元运算符 int x expressi
  • 如何添加后退按钮功能MFSlidemenu?

    我已经在我的项目中实现了 MFSideMenu 它效果很好 但现在我想为每个视图实现后退按钮功能 我尝试这个但不起作用 NSArray array self navigationController viewControllers self
  • Java 详细类加载

    我试图列出 Java 类加载器加载我的类的顺序 如果我使用 verbose参数它将列出它加载的每个接口 类 包括大量接口 例如可序列化 异常等 有没有办法调整此输出 以便它只显示我的主要方法定义的类中加载了哪些类 我想你最好的选择是执行以下
  • Web Worker 在 Chrome 中被主线程阻止

    我有一个网络工作者 https developer mozilla org en US docs Web API Web Workers API basic usage 我希望用它定期发出网络请求 我特别想要的一件事是即使主 JS 执行线程
  • 如何从 JSP 和 Struts 操作类中的文件对话框中选择文件名?

    我正在开发一个网络应用程序 用户注册时必须选择个人资料图片 然后单击上传按钮 所以 我的问题是如何获得FileName哪个用户选择并显示 我正在使用 Struts 2 和 JSP 如果您使用该房产uploadFileName随着upload
  • yii2 的 REST API,身份验证器 (HttpBearerAuth) 在服务器上不起作用

    我刚刚创建了一个使用 REST API 的项目 使用 yii2 框架 REST API 的所有问题在本地主机上都运行得非常好 但是当将项目放在服务器上时 也使用相同的数据库 授权不可用 现在我正在使用 yii filters auth Ht
  • IE 中存在“JSON”未定义问题,但 chrome 中没有

    我在 IE9 中使用 Json stringify 时 我的 jquery ajax 调用出现以下错误 Microsoft JScript 运行时错误 JSON 未定义 直到昨天 相同的功能仍然适用于我 并且仍然适用于我同事的机器和我机器上
  • 桌面桥应用程序中的桌面快捷方式。我们从哪里获取AppUserModelId

    当第一次使用我的 Desktop Bridge 应用程序时 我尝试创建桌面快捷方式 我可以成功创建一个指向Application ExecutablePath 但是当用户打开快捷方式时会生成错误 该错误与用户无权访问该文件夹有关 我在互联网
  • 为什么使用 sha1/sha256 哈希进行 Base64 处理?

    谁能告诉我为什么亚马逊想要 hmac sha1 sha256 哈希值的 base64 http docs amazonwebservices com AmazonSimpleDB latest DeveloperGuide HMACAuth