我正在尝试编写单元测试,以检查我是否正确地对字符串(实际上是PEM证书)进行了哈希和编码。
我正在做的是:
SHA-256散列的值具有恒定的长度(256位)。这可以用不同的方式表示(十六进制/二进制等),但其底下是相同的。我将值存储在Java字节数组中。
我的问题是这样的:如果我尝试对这个哈希字节数组值进行base64url编码,那么生成的编码字符串的长度是否总是相同?还是会根据基础哈希中存在的值而有所不同?
我不清楚的是“ base64url”编码的“ url”部分:因为它使字符串对于url安全,所以它可以进行任何形式的字符扩展(例如,urlencoding替换单个空格字符)加上%20(三个字符)。
答案 0 :(得分:1)
Base64Url编码是简单的Base64编码,其中+和/切换为两个不同的字符,更适合放入Uri。
由于SHA-256将始终具有相同的固定长度,因此,以base64编码的SHA-256哈希也将具有相同的固定长度。每个base64位为6位。尽管由于256/6不是整数而会得到一些填充字符('='),但字符串的长度始终相同。