0

我一直在玩在这里找到的代码。我得到了类似的东西

UKepQT7tW8mGtOJzNaLV2X+Ij/E=

当我使用查看散列密码时

String t = base64EncoderDecoder.encodeAsString(f.generateSecret(spec).getEncoded());

对于我的哈希密码。它应该有像 +/= 这样的符号吗?我也预计哈希会更长。我搞砸了什么吗?

4

1 回答 1

3

它应该有像 +/= 这样的符号吗?

好吧,根据谷歌的第一个结果应该是什么(关于 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),这就是你所拥有的,所以对我来说这似乎是合理的。

于 2012-07-07T06:15:24.237 回答