作者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/cn.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