背景#
專案中仿 QQ 閃照功能,圖片的傳送邏輯是,先轉 base64,然後加密,最後加密後的字串作為檔案傳送;在處理接收的時候,按照先下載檔案,然後讀取檔案內容,再解密,然後按照 base64 字串的方式生成圖片,卻一直失敗。
解決方法#
起初以為是加解密的問題,仔細排查後,排除了這個假設。最後把解密後的字串複製到 VSCode 中仔細觀察發現,其中多了很多 \r\n
。
搜索後發現,是 base64 加密的問題,由於 base64 一行不能超過 76 字元,超過就會添加換行符號(在 Windows 中是\r\n
,在 Linux 中是\n
)。而解析後其中的換行就是錯誤訊息,所以解決方法是,把\r\n
替換為空字串,然後再去生成圖片,就正常了。