base64加密出現的\r\n換行問題

base64加密出現的\r\n換行問題,導致在與對接方對接時,字符串長會簽名出錯。

 

原來是RFC2045中有規定:

The encoded output stream must be represented in lines of no more than 76 characters each.

Base64一行不能超過76字符,超過則添加回車換行符。

結合前面博客說的“有回車符,導致JSON格式不符合要求”,那就明白了,對附件進行Base64編碼,因爲超過76字節,所以要添加回車換行符,後臺解析帶有回車換行符的JSON字符串就出現“ net.sf.json.JSONException : Unterminated string ”。

問題根源就是回車換行符,那刪除就行了,谷歌後又發現一問題,原來“回車換行符(\r\n)”是在Windows纔有,而Linux只有換行(\n),Mac只有回車(\r)。

再搜索了一下找到了解決辦法,調用字符串對象的replaceAll方法替換掉\r和\n,代碼如下:

字符串對象.replaceAll("\r|\n", "");

這樣就兼容了不同平臺。

參考資料:

Base64換行問題資料
--------------------- 
作者:小雞也瘋狂 
來源:CSDN 
原文:https://blog.csdn.net/jifengwan/article/details/45460695 
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章