情况:
=>得到
我们无法解密java.lang.SecurityException:无法解密:pad block corrupted
在分析期间,我们比较了传递给decode()方法的字节数组,以便跳过所有可能的base64问题,并且数组是相同的。
同样,传递给同一个java模块的两个相同的字节数组会产生不同的结果(在java上是ok,在android上是异常)。
传递给Cipher模块的参数是硬编码的,并且在两个平台上都是相同的。
差异在哪里
答案 0 :(得分:1)
我们终于找到了Java和Android代码之间的区别。原来,Cipher组件只是一个容器,并没有自己实现任何东西。特定算法实现由提供者完成,并且每个平台具有配置的不同提供者列表。在我们的例子中,如果有一些Sun实现Java和Bouncy Castle for Android。所以事实证明,wir意外地使用了加密算法,其实现对于不同的提供者来说是不同的