3
我遇到以下問題。我使用this代碼來加密C#中的示例文本,並且想要用java解密它。我使用下面的java代碼。使用java解密C#中的AES加密文件
byte[] IV = { 65, 1, 2, 23, 4, 5, 6, 7, 32, 21, 10, 11, 12, 13, 84, 45 };
byte[] KEY = { 0, 42, 2, 54, 4, 45, 6, 7, 65, 9, 54, 11, 12, 13, 60, 15 };
byte baData[] = new byte[1024];
int iRead = 0;
SecretKeySpec key = new SecretKeySpec(KEY, "AES/CBC/PKCS5Padding");
Cipher cipher = Cipher.getInstance ("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(IV));
File file = new File("/sdcard", "SAMPLE.txt");
FileInputStream in = new FileInputStream(file);
iRead = in.read(baData, 0, baData.length);
String strResult = new String(cipher.doFinal(baData, 0, baData.length));
我明顯使用與C#示例中相同的IV和KEY值。上面的java代碼運行在android設備上,加密的二進制文件是sdcard上的SAMPLE.txt。 問題是解密後我沒有得到正確的數據。誰能告訴我我做錯了什麼?
謝謝。
你對這些觀點是正確的,但我實際上正在測試一個我知道會很小的樣本數據。但真正的問題原來是我使用Cipher.ENCRYPT_MODE而不是Cipher.DECRYPT_MODE。一個愚蠢的錯誤,但我剛剛意識到這一點,因爲我正在修改你的觀點。謝謝你的幫助喬恩。 – black 2011-06-07 12:35:02
@Sebouh:我已經編輯了我的答案,以指出未來的讀者。 – 2011-06-07 12:44:12