作者magic704226 (梅姬?沒雞?傻傻分不清楚)
看板AndroidDev
標題[問題] Android處理php base64_encode
時間Thu Apr 26 14:53:20 2018
請教目前有一個案子用到
php base64_encode()
base64_decode()
Android side也要同時對應
Android 端目前是使用
android.util.Base64;
Base64.encode
Base64.decode
光分別在php與android 丟入"abc"加解密
就不一樣了
有人遇過如何處理嗎?
感恩
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.219.119.49
※ 文章網址: https://webptt.com/m.aspx?n=bbs/AndroidDev/M.1524725603.A.952.html
1F:→ ssccg: 不一樣是怎麼不一樣? 你的"abc"是先用什麼編碼再Base64的? 04/26 15:20
Android 加密
https://ideone.com/bZ5aO0
加密後
a8Kew5vCmsOTw5zCh8OjYiDCgMKbwo9YYGnCjMOMw659woB/w5XDjF0Awop6wrfDvnXCtQ==
php 加密
https://ideone.com/KCxKeF
加密後
a57bmtPch+NiIICbj1hgaYzM7n2Af9XMXQCKerf+dbU=
2F:→ ssccg: java錯的,最快改法是hexTestStr.getBytes("ISO-8859-1") 04/26 16:01
3F:→ ssccg: 但是根本原因是正確轉碼過程應該是 hex→byte[]→base64 04/26 16:02
4F:→ ssccg: 你的hex2String是把byte資料硬塞進String裡(這相當於將byte 04/26 16:03
5F:→ ssccg: 當做ISO-8859-1編碼的字串資料來轉成String 04/26 16:05
6F:→ ssccg: 後來getBytes時會用系統預設編碼(應該是UTF-8)轉成byte 04/26 16:06
7F:→ ssccg: hex→byte[] (ISO-8859-1)→String→UTF8 byte[]→base64 04/26 16:08
8F:→ ssccg: 這是錯的,binary資料就不要再轉String了,把hex2String砍 04/26 16:08
9F:→ ssccg: 掉換一個hex2Bytes才對 04/26 16:08
10F:→ ssccg: 另外base64是編碼,不是加密 04/26 16:37
感謝,今天有解決此誤解,十分感恩
※ 編輯: magic704226 (220.141.171.7), 04/26/2018 23:42:34
12F:→ y3k: 阿....抱歉看錯 上面請無視XD 04/27 10:16
13F:→ kobe8112: 平常用BASE64主要的問題都是字串和陣列互相轉換時候的編 04/27 14:28
14F:→ kobe8112: 碼格式不一致,BASE64本身是很單純的 04/27 14:29
15F:→ ssccg: 我是覺得能表示成String的根本不用base64,base64不就方便 04/27 15:00
16F:→ ssccg: 在用較單純的字元來表示binary資料而已 04/27 15:02