今是昨非

今是昨非

日出江花红胜火,春来江水绿如蓝

base64暗号化に関する問題

背景#

プロジェクトで QQ のフラッシュ写真機能を模倣し、画像の送信ロジックは、まず base64 に変換し、次に暗号化し、最後に暗号化された文字列をファイルとして送信します。受信処理の際は、まずファイルをダウンロードし、次にファイルの内容を読み取り、解読し、最後に base64 文字列の形式で画像を生成しますが、常に失敗しています。

解決方法#

最初は暗号化と復号化の問題だと思いましたが、慎重に調査した結果、この仮説は排除されました。最終的に復号化された文字列を VSCode にコピーして注意深く観察したところ、多くの\r\nが含まれていることに気付きました。

検索した結果、これは base64 暗号化の問題であることがわかりました。base64 は 1 行 76 文字を超えてはいけなく、超えると改行コードが追加されます(Windows では\r\n、Linux では\nです)。解析後の改行とキャリッジリターンはエラーメッセージとなるため、解決方法は\r\nを空文字列に置き換え、その後画像を生成すると正常に動作しました。

参考#

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。