[問題] Android處理php base64_encode

看板AndroidDev作者 (梅姬?沒雞?傻傻分不清楚)時間6年前 (2018/04/26 14:53), 6年前編輯推噓0(0016)
留言16則, 3人參與, 6年前最新討論串1/1
請教目前有一個案子用到 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

04/26 15:20, 6年前 , 1F
不一樣是怎麼不一樣? 你的"abc"是先用什麼編碼再Base64的?
04/26 15:20, 1F
Android 加密 https://ideone.com/bZ5aO0 加密後 a8Kew5vCmsOTw5zCh8OjYiDCgMKbwo9YYGnCjMOMw659woB/w5XDjF0Awop6wrfDvnXCtQ== php 加密 https://ideone.com/KCxKeF 加密後 a57bmtPch+NiIICbj1hgaYzM7n2Af9XMXQCKerf+dbU=

04/26 16:01, 6年前 , 2F
java錯的,最快改法是hexTestStr.getBytes("ISO-8859-1")
04/26 16:01, 2F

04/26 16:02, 6年前 , 3F
但是根本原因是正確轉碼過程應該是 hex→byte[]→base64
04/26 16:02, 3F

04/26 16:03, 6年前 , 4F
你的hex2String是把byte資料硬塞進String裡(這相當於將byte
04/26 16:03, 4F

04/26 16:05, 6年前 , 5F
當做ISO-8859-1編碼的字串資料來轉成String
04/26 16:05, 5F

04/26 16:06, 6年前 , 6F
後來getBytes時會用系統預設編碼(應該是UTF-8)轉成byte
04/26 16:06, 6F

04/26 16:08, 6年前 , 7F
hex→byte[] (ISO-8859-1)→String→UTF8 byte[]→base64
04/26 16:08, 7F

04/26 16:08, 6年前 , 8F
這是錯的,binary資料就不要再轉String了,把hex2String砍
04/26 16:08, 8F

04/26 16:08, 6年前 , 9F
掉換一個hex2Bytes才對
04/26 16:08, 9F

04/26 16:37, 6年前 , 10F
另外base64是編碼,不是加密
04/26 16:37, 10F
感謝,今天有解決此誤解,十分感恩 ※ 編輯: magic704226 (220.141.171.7), 04/26/2018 23:42:34

04/27 10:15, 6年前 , 11F
很久以前寫的 給你參考 http://0rz.tw/2o40a
04/27 10:15, 11F

04/27 10:16, 6年前 , 12F
阿....抱歉看錯 上面請無視XD
04/27 10:16, 12F

04/27 14:28, 6年前 , 13F
平常用BASE64主要的問題都是字串和陣列互相轉換時候的編
04/27 14:28, 13F

04/27 14:29, 6年前 , 14F
碼格式不一致,BASE64本身是很單純的
04/27 14:29, 14F

04/27 15:00, 6年前 , 15F
我是覺得能表示成String的根本不用base64,base64不就方便
04/27 15:00, 15F

04/27 15:02, 6年前 , 16F
在用較單純的字元來表示binary資料而已
04/27 15:02, 16F
文章代碼(AID): #1QuNTZbI (AndroidDev)
文章代碼(AID): #1QuNTZbI (AndroidDev)