PBEWithMD5AndDESによって提供され、次にBase64でエンコードされた暗号化文字列にCRまたはLF文字を含めることができますか?
3 に答える
Base64は印刷可能な文字のみです。ただし、電子メールのMIMEタイプとして使用される場合は、CR-LFで区切られた行に分割されます。
PBEWithMD5AndDESはバイナリデータを返します。PBE暗号化はPKCS#5標準内で定義されており、この標準には専用のbase64エンコードスキームがありません。したがって、問題は、どのシステムでバイナリデータをBase64エンコードする必要があるかということです。ウィキペディアには、Base 64の記事内に、さまざまなフォームを説明するすばらしいセクションがあります。
Base 64を返すPBE実装に遭遇する可能性がありますが、その実装では、上記のスキームのどれが使用されているかについては言及されていません。その場合、どのスキームが使用されているかをどうにかして把握する必要があります。それを検索するか、コミュニティに質問するか、ソースを確認するか、すべてが失敗した場合は、出力に対して一連のテストを作成することをお勧めします。
幸い、base 64をデコードしていて、すべての空白を無視している場合は、かなり安全です。一部の実装ではパディングが無視されているため、該当する場合は、デコードする前にパディングを追加してください。
エンコーディングベース64を自分で実行する場合は、空白を出力せず、デフォルトのアルファベット('+'
および'/'
記号付き)のみを使用し、必要に応じて常にパディングを実行することを強くお勧めします。その後、いつでも結果を分割して非標準の文字(特に、'+'
および'/'
記号)を置き換えるか、パディングを削除できます。
AndoridSDKでJavaを使用していました。私はそのコマンドを見つけました:
String s = Base64.encodeToString(enc, Base64.DEFAULT);
行の折り返しを行いました。LF文字を出力文字列に入れます。
見つけた:
String s = Base64.encodeToString(enc, Base64.NO_WRAP);
LF文字を出力文字列に入れませんでした。