0

現在、パスワードを暗号化してデータベースに保存する必要がある Web アプリケーションを作成しています。PBKDF2WithHmacSHA1 を使用してパスワードを暗号化する次のガイドを見つけました。提供された例では、getEncryptedPassword メソッドはバイト配列を返します。

結果を Base64 エンコードする利点はありますか? デメリットはありますか?

4

2 に答える 2

1

byte[] 配列は、値を格納するための最小のメカニズムです (ストレージ スペースに関して)。これらの値がたくさんある場合は、それらをバイトとして保存するのが理にかなっています。結果を保存する場所によっては、フォーマットも異なる場合があります。ほとんどのデータベースは byte[] 値にかなりうまく対応しますが、扱いにくい場合があります (データベースによって異なります)。テキスト ファイルや XML ドキュメントなどのストアは、明らかに byte[] 配列に苦労します。

ほとんどの場合、意味のある 2 つの形式、16 進数表現、またはバイト [] があると思います。短い値 (32 文字未満) に対する Base64 の利点がそれだけの価値があるとはほとんど思いません (より大きなアイテムの場合は、base64 を使用してください。そのための素晴らしいライブラリもあります)。

これは明らかにすべて主観的です.....

値を 16 進数に変換するのは非常に簡単です。Java でバイト配列を 16 進文字列に変換する方法を参照してください。

16 進出力は便利で、構築するアルゴリズムがより複雑な Base64 よりも管理が簡単で、そのため少し遅くなります.....

于 2013-11-07T04:37:02.290 に答える
0

妥当なデータベースであると仮定しても、それは単なるエンコーディング スキームであるため、利点はありません。Base 64 エンコーディングの結果、サイズが大きくなりますが、これは欠点です。データベースが確実に 8 ビット バイトを格納する場合は、ハッシュをデータベースに格納するだけです。

于 2015-12-11T18:09:03.700 に答える