看板 AndroidDev 關於我們 聯絡資訊
請教目前有一個案子用到 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://www.ptt.cc/bbs/AndroidDev/M.1524725603.A.952.html
ssccg: 不一樣是怎麼不一樣? 你的"abc"是先用什麼編碼再Base64的? 04/26 15:20
Android 加密 https://ideone.com/bZ5aO0 加密後 a8Kew5vCmsOTw5zCh8OjYiDCgMKbwo9YYGnCjMOMw659woB/w5XDjF0Awop6wrfDvnXCtQ== php 加密 https://ideone.com/KCxKeF 加密後 a57bmtPch+NiIICbj1hgaYzM7n2Af9XMXQCKerf+dbU=
ssccg: java錯的,最快改法是hexTestStr.getBytes("ISO-8859-1") 04/26 16:01
ssccg: 但是根本原因是正確轉碼過程應該是 hex→byte[]→base64 04/26 16:02
ssccg: 你的hex2String是把byte資料硬塞進String裡(這相當於將byte 04/26 16:03
ssccg: 當做ISO-8859-1編碼的字串資料來轉成String 04/26 16:05
ssccg: 後來getBytes時會用系統預設編碼(應該是UTF-8)轉成byte 04/26 16:06
ssccg: hex→byte[] (ISO-8859-1)→String→UTF8 byte[]→base64 04/26 16:08
ssccg: 這是錯的,binary資料就不要再轉String了,把hex2String砍 04/26 16:08
ssccg: 掉換一個hex2Bytes才對 04/26 16:08
ssccg: 另外base64是編碼,不是加密 04/26 16:37
感謝,今天有解決此誤解,十分感恩 ※ 編輯: magic704226 (220.141.171.7), 04/26/2018 23:42:34
y3k: 很久以前寫的 給你參考 http://0rz.tw/2o40a 04/27 10:15
y3k: 阿....抱歉看錯 上面請無視XD 04/27 10:16
kobe8112: 平常用BASE64主要的問題都是字串和陣列互相轉換時候的編 04/27 14:28
kobe8112: 碼格式不一致,BASE64本身是很單純的 04/27 14:29
ssccg: 我是覺得能表示成String的根本不用base64,base64不就方便 04/27 15:00
ssccg: 在用較單純的字元來表示binary資料而已 04/27 15:02