确定base64url编码字符串的长度

问题描述 投票:0回答:1

我正在尝试编写一个单元测试来检查我是否正在哈希并正确编码字符串(实际上是PEM证书)。

我在做的是:

  1. 取得证书(采用PEM格式)
  2. 将其转换为DER
  3. 在其上运行散列函数以获得散列值(SHA-1 / SHA-256)
  4. Base64Url编码哈希

SHA-256散列的值具有恒定长度(256位)。这可以用不同的方式表示(十六进制/二进制等),但它在下面是相同的。我将值存储在Java字节数组中。

我的问题是:如果我尝试base64url编码这个散列字节数组值,结果编码字符串的长度是否总是相同?或者它会根据底层哈希中的值而变化?

我不清楚的是“base64url”编码的“url”部分:因为它使字符串对于url是安全的,它是否进行任何类型的字符扩展(例如,urlencoding用%20替换单个空格字符)这是三个字符)。

hash encoding base64url
1个回答
1
投票

Base64Url编码只是Base64编码,+和/切换到两个不同的字符,更适合放入Uri。

由于SHA-256始终具有相同的固定长度,因此base64编码的SHA-256哈希也将具有相同的固定长度。每个base64数字是6位。虽然由于256/6不是整数,您将获得一些填充字符('='),但字符串将始终具有相同的长度。

© www.soinside.com 2019 - 2024. All rights reserved.