web-dev-qa-db-ja.com

Base64エンコーディングで改行を削除しても大丈夫ですか

私のJavaアプリケーションは、76文字ごとに改行(_\n_)を挿入するbase64エンコードを使用します。このエンコードされた文字列をプロパティファイルに配置する必要があります。

encodedString.replaceAll("\n", "");を実行すると、問題なく動作しますが、これが期待されていることを確認したいだけで、隠れた問題は発生していません。

39
Atul Soman

Base64でエンコードされた文字列を複数行に分割することは、長い行を処理できなかった多くの古いプログラムで必要でした。 Javaで記述されたプログラムは、メモリ管理を自分で行う必要がないため、通常長い行を処理できます。行が6,400万文字より短い限り、問題はないはずです。

そして、改行は必要ないので、可能であればそれらをまったく生成すべきではありません。

43
Roland Illig

Base64エンコーダーの中には、CRLF( '\ r\n')などのEOL文字をエンコードされた文字列に追加するものがあります。 Base64.encodeBase64URLSafe を使用してそれらを取り除くことができます:

Base64アルゴリズムのURLセーフなバリエーションを使用してバイナリデータをエンコードしますが、出力をチャンクしません。 url-safeバリエーションは、+および/文字の代わりに-および_を出力します。注:パディングは追加されません。

6
aeliton