2017-01-23 27 views
0

情況:無法解密的Android(損壞焊盤塊)(PBEWithMD5AndDES)

  • 字符串是越來越加密在Java環境(javax.crypto.Cipher中/ PBEWithMD5AndDES),base64編碼
  • 字符串被轉移到Android的
  • 相同的密碼解碼器時,只有不同的base64庫

=>我們不能解密,得到

java.lang.SecurityException異常:無法解密:墊塊損壞

在分析過程中,我們比較字節數組,傳遞給decode()方法,以跳過所有可能的base64問題,以及陣列是相同的。

再次,傳遞給同一個java模塊的兩個相同的字節數組會產生不同的結果(java上的ok,android上的異常)。

傳遞給密碼模塊的參數是硬編碼的,並且在兩個平臺上都是相同的。

差異在哪裏

+0

請提供您用於加密和解密的實際代碼以及適用於桌面Java而不是Android的測試向量。 – Andy

+0

感謝您的提議。看起來我們已經找到了原因 - 使用了不同的提供商。 –

回答

1

我們終於找到了Java和Android代碼之間的區別。事實證明,Cipher組件只是一個容器,本身並沒有實現任何東西。特定的算法實現由提供者完成,每個平臺都配置了不同的提供者列表。在我們的例子中,是否有一些針對Java的Sun實現以及針對Android的Bouncy Castle。所以事實證明,wir意外地使用了針對不同供應商的實現方式不同的加密算法

相關問題