Base64編碼將二進制數據按照每三個字節轉換成四個字節可讀字符,編碼后的字符長度大約為136.1%。字符范圍為 A-Z a-z 0-9 \ +。但編碼后的字符串不太適合使用URL傳輸,中文加密后的亂碼也多是因為這個原因引起:放在url中傳輸時+號會被替換成空格;並且每76個字符都會添加一個換行"\n",這個換行符合會丟失。
例如:
哈哈哈哈哈哈。。。。
哈哈哈哈哈哈。。。。
哈哈哈哈哈哈。。。。
哈哈哈哈哈哈。。。。
哈哈哈哈哈哈。。。。
會被編碼為:
uf65/rn+uf65/rn+oaOho6GjDQoNCrn+uf65/rn+uf65/qGjoaOhow0KDQq5/rn+uf65/rn+uf6h\no6GjoaM=
放在URL中傳輸時會變成:
uf65/rn uf65/rn oaOho6GjDQoNCrn uf65/rn uf65/qGjoaOhow0KDQq5/rn uf65/rn uf6h
o6GjoaM=
o6GjoaM=
解析肯定會出問題。
所以在傳輸和解密時要做如下處理:
1.去掉\n
2.替換空格為+