各位前輩 老師 同學 大家好
我這次寫的程式最後用到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
作者:
PsMonkey (痞子軍團團長)
2014-04-18 22:38:00這,我到底是該刪還是不該刪... [攤手]
server程式:instruction 是什麼? Object[] 嗎?
收到的字串 [0] 放id [1] 放加解密的字串><
看不懂,你說你使用byteToHex,我整份程式碼沒看到這個既然註明是 hexToByte(instruction[1]); 這行錯,你沒放hexToByte程式,也沒說明instruction,我們要怎麼看?hexToByte ... 輸入的 s 長度必須為16的倍數剛剛亂測一下api,應該是key長度問題?
那我應該怎麼作 直接補0 嗎? 為什麼在Android底下
說錯了,不是Key,是加密結果長度必須為16的倍數?
? 拿Cipher的時候就有參數要你填padding規則了啊
你在Android code底下的temp就是32位元了吧?你不是把temp傳到server解密嗎? 更正,是長度為32為什麼要補0? AES密文長度不是16的倍數嗎?
可是不知道為什麼傳過去就不是了...?我檢查一下客戶端送出的東西 跟伺服器接到的東西好了