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