0

私はここにあるコードで遊んでいます。私は次のようなものを手に入れています

UKepQT7tW8mGtOJzNaLV2X+Ij/E=

を使用してハッシュされたパスワードを表示すると

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

ハッシュ化されたパスワード。+ / =のような記号が必要ですか?また、ハッシュが長くなることを期待していました。私は何かを台無しにしましたか?

4

1 に答える 1

3

+ / =のような記号が必要ですか?

さて、最初のGoogleの結果(Base64エンコーディングに関するWikipediaの記事)による+/、それぞれ62と63にマップされる有効なシンボルです。 =パディング文字です。

また、ハッシュが長くなることを期待していました。

なんで?これは、使用しているエンコード方法の結果にすぎません。ベース16で何かをエンコードすると、50%多くの文字が必要になります(6ビットごとに1文字ではなく、4ビットごとに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 に答える