背景#
プロジェクトでは、QQ のフラッシュ写真機能を模倣しています。画像の送信ロジックは、まず base64 に変換し、次に暗号化し、最後に暗号化された文字列をファイルとして送信します。受信時には、まずファイルをダウンロードし、次にファイルの内容を読み取り、その後に復号化し、最後に base64 文字列の形式で画像を生成しますが、常に失敗してしまいます。
解決方法#
最初は暗号化と復号化の問題だと思いましたが、注意深く調査した結果、この仮説は除外しました。最後に復号化された文字列を VSCode にコピーして注意深く観察すると、そこには多くの\r\n
が含まれていることに気付きました。
検索した結果、これは base64 暗号化の問題であり、base64 は 1 行に 76 文字を超えることはできず、超えると改行文字(Windows では\r\n
、Linux では\n
)が追加されます。解析後、改行文字と改行はエラーメッセージになるため、解決策は\r\n
を空の文字列に置き換えてから画像を生成することです。