我檢查一下Android送出的東西跟 伺服器接到的東西

看板java作者 (真理)時間10年前 (2014/04/18 22:00), 10年前編輯推噓2(2014)
留言16則, 4人參與, 最新討論串1/1
各位前輩 老師 同學 大家好 我這次寫的程式最後用到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
server程式:instruction 是什麼? Object[] 嗎?
04/18 23:29, 2F

04/18 23:31, , 3F
收到的字串 [0] 放id [1] 放加解密的字串><
04/18 23:31, 3F

04/18 23:33, , 4F
看不懂,你說你使用byteToHex,我整份程式碼沒看到這個
04/18 23:33, 4F

04/18 23:35, , 5F
既然註明是 hexToByte(instruction[1]); 這行錯,你沒
04/18 23:35, 5F

04/18 23:38, , 6F
放hexToByte程式,也沒說明instruction,我們要怎麼看?
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
hexToByte ... 輸入的 s 長度必須為16的倍數
04/19 00:31, 7F

04/19 00:34, , 8F
剛剛亂測一下api,應該是key長度問題?
04/19 00:34, 8F

04/19 00:34, , 9F
那我應該怎麼作 直接補0 嗎? 為什麼在Android底下
04/19 00:34, 9F

04/19 00:37, , 10F
說錯了,不是Key,是加密結果長度必須為16的倍數?
04/19 00:37, 10F

04/19 00:38, , 11F
? 拿Cipher的時候就有參數要你填padding規則了啊
04/19 00:38, 11F

04/19 00:42, , 12F
你在Android code底下的temp就是32位元了吧?你不是把
04/19 00:42, 12F

04/19 00:44, , 13F
temp傳到server解密嗎? 更正,是長度為32
04/19 00:44, 13F

04/19 00:47, , 14F
為什麼要補0? AES密文長度不是16的倍數嗎?
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
文章代碼(AID): #1JKJ0BJY (java)