我有一個Android應用程序,它使用javax.crypto
來加密文件中的一些文本數據。加密實現類似於this。該應用程序可以正常使用之前創建的加密數據。Java加密API與不同平臺
現在,我幾乎將我的Android應用程序移植到桌面(JFace/SWT)。我爲移植的應用程序使用相同的加密實現,因爲它不依賴於任何Android特定的API。移植後的應用程序可以正常使用它創建的加密數據。
問題是桌面應用程序無法解密與Android應用程序一起保存的數據。 Android應用程序無法解密數據,這也與桌面應用程序一起保存。我重複檢查了明文數據和密碼的字節流,以在兩個平臺上進行加密。它們是相同的,所以文本編碼沒有問題。但是加密例程在不同平臺上返回不同的加密結果,即使輸入數據是字節到字節相同的。
Java crypto API是否保證在不同的平臺上執行相同的操作?在我的情況下,加密提供者(AES/128bit)在Android,Linux和Windows上的工作方式應該是相同的嗎?有沒有辦法調整javax.crypto
以獲得不同平臺上的互操作性?
加密算法是非常明確的。如果輸入字節對於字節完全相同,並且Java加密方法調用是相同的,那麼_在輸出字節中不會有差別。 –
如果您顯示您用於加密/解密的代碼,我們可以顯示問題點。 –
你在責怪API,但我敢打賭這是你程序中的一個錯誤。 –