我們需要編寫一些Android代碼來解密從我們的服務器發送的一些數據。我們的服務器團隊向我們提供了一些使用「SunJCE」提供程序的解密代碼示例,但不幸的是,這些代碼在Android上不存在。在Android上解密「SunJCE」AES加密數據
Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding", "SunJCE");
有沒有人知道在Android上實現這個最簡潔的方法?如果我們嘗試這在Android
Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
那麼它看起來像一些不需要的垃圾出現在解密文本的結尾,例如:
ComparisonFailure: expected:<...lAAAAABJRU5ErkJggg==[]> but was:<...lAAAAABJRU5ErkJggg==[��������]>
我們嘗試了很多不同的變換組合,在Android密碼類(例如「AES/CBC/PKCS5Padding」),但不斷地擊中BadPaddingExceptions之類的東西。
我們還能夠使用純Java模塊解密此數據,該模塊似乎沒有顯示相同的垃圾字符。有沒有辦法使用Android類來做到這一點?
你能打印出十六進制的純文本值(使用NoPadding)嗎? Bouncy Castle和Apache Commons Codec(以及Guava等)都有一個十六進制編碼器。 –
[Simple java AES encryption/decrypt example]可能的重複(http://stackoverflow.com/questions/15554296/simple-java-aes-encrypt-decrypt-example) – JFPicard
您是否試過這個例子[simple-java-aes -encrypt - 解密 - 示例](http://stackoverflow.com/questions/15554296/simple-java-aes-encrypt-decrypt-example)? – caot