我一直在玩在这里找到的代码。我得到了类似的东西
UKepQT7tW8mGtOJzNaLV2X+Ij/E=
当我使用查看散列密码时
String t = base64EncoderDecoder.encodeAsString(f.generateSecret(spec).getEncoded());
对于我的哈希密码。它应该有像 +/= 这样的符号吗?我也预计哈希会更长。我搞砸了什么吗?
我一直在玩在这里找到的代码。我得到了类似的东西
UKepQT7tW8mGtOJzNaLV2X+Ij/E=
当我使用查看散列密码时
String t = base64EncoderDecoder.encodeAsString(f.generateSecret(spec).getEncoded());
对于我的哈希密码。它应该有像 +/= 这样的符号吗?我也预计哈希会更长。我搞砸了什么吗?
它应该有像 +/= 这样的符号吗?
好吧,根据谷歌的第一个结果应该是什么(关于 Base64 编码的维基百科文章),+
并且/
是分别映射到 62 和 63 的有效符号。 =
是一个填充字符。
我也预计哈希会更长。
为什么?这只是您使用的编码方法的结果。以 16 进制编码会多占用 50% 的字符(因为每 4 位需要 1 个字符,而不是每 6 位需要 1 个字符)。从您引用的参考资料中:
// SHA-1 generates 160 bit hashes, so that's what makes sense here
160 位产生 27 个字符的 Base64 编码(160/6 ~= 27),这就是你所拥有的,所以对我来说这似乎是合理的。