我檢查一下Android送出的東西跟 伺服器接到的東西
各位前輩 老師 同學 大家好
我這次寫的程式最後用到AES 加解密
過去三天 我一直卡在同一個地方 讓我有點兒崩潰
從android 送出加密後訊息 伺服器收到後
都會丟出
Input length must be multiple of 16 when decrypting with padded cipher
我參考到網路上的解法是 base64 或者 toHEX 字串來解決
我使用byteToHex來解決這個問題
但問題沒有解決
我有確定 客戶端跟伺服器皆算出同樣的一把session key
出問題的程式碼在下面 也標記了 出問題的一行程式碼
拜託 各位幫我看一下 我的盲點在哪...QAQ
再不行 我可能要試試看 在android 使用 Spongy Castle
在java server 使用 Bouncy Castle 了 ~"~
先謝謝大家了 Orz
伺服器 部分程式碼 http://chopapp.com/#dommpgst
android 部分程式碼 http://chopapp.com/#p1p6qrn3
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.74.127.208
※ 文章網址: http://www.ptt.cc/bbs/java/M.1397829643.A.4E2.html
推
04/18 22:38, , 1F
04/18 22:38, 1F
→
04/18 23:29, , 2F
04/18 23:29, 2F
→
04/18 23:31, , 3F
04/18 23:31, 3F
→
04/18 23:33, , 4F
04/18 23:33, 4F
→
04/18 23:35, , 5F
04/18 23:35, 5F
→
04/18 23:38, , 6F
04/18 23:38, 6F
不好意思 本來就是這行程式碼出錯 我也用byteToHex 還有hexToByte 互解過
所以我覺得是對的 所以沒PO
public static String bytesToHex(byte[] in) {
final StringBuilder builder = new StringBuilder();
for(byte b : in) {
builder.append(String.format("%02x", b));
}
return builder.toString();
}
public static byte[] hexToByte(String s) {
return new BigInteger(s, 16).toByteArray();
}
※ 編輯: janice001 (111.252.192.242), 04/18/2014 23:47:43
→
04/19 00:31, , 7F
04/19 00:31, 7F
→
04/19 00:34, , 8F
04/19 00:34, 8F
→
04/19 00:34, , 9F
04/19 00:34, 9F
→
04/19 00:37, , 10F
04/19 00:37, 10F
推
04/19 00:38, , 11F
04/19 00:38, 11F
→
04/19 00:42, , 12F
04/19 00:42, 12F
→
04/19 00:44, , 13F
04/19 00:44, 13F
→
04/19 00:47, , 14F
04/19 00:47, 14F
→
04/19 00:50, , 15F
04/19 00:50, 15F
→
04/19 00:52, , 16F
04/19 00:52, 16F
謝謝 cyclone350 的意見
檢查 長度之後發現訊息長度被更改 後來發現 Hex byte 之間的轉換是有問題的
已經成功加解密來回了 謝謝 >v<
※ 編輯: janice001 (111.252.192.242), 04/19/2014 02:21:01