2
我正在嘗試做一些非常簡單的事情。我使用AxCrypt在Windows中加密了一個文件。在我的Android應用程序中,我想解密這個文件。使用預先存在的AES密鑰解密Java文件
由AxCrypt產生的128位AES密鑰是
CWTr 45Qg eHhy n23d YPC3 DjRi IxUe bt77 TVzQ NtSh HEc=
我這個假設Base64編碼字符串,但也許我錯了。我用空格將它插入到下面的代碼中,但我也試過沒有空格,並得到相同的結果。
解密文件的java代碼如下。解密過程開始,但是「解密中最後一個塊不完整」的錯誤以及生成的文件(mp4視頻)無法播放。
Java代碼:
try {
Utils.logDebug(TAG, "Decrypting!");
File encfile = new File(getFilesDir() + "/encrypted.axx");
int read;
if (!encfile.exists())
encfile.createNewFile();
File decfile = new File(getFilesDir() + "/decrypted.mp4");
if (!decfile.exists())
decfile.createNewFile();
FileInputStream encfis = new FileInputStream(encfile);
FileOutputStream decfos = new FileOutputStream(decfile);
Cipher decipher = Cipher.getInstance("AES");
byte key[] = Base64.decode("CWTr 45Qg eHhy n23d YPC3 DjRi IxUe bt77 TVzQ NtSh HEc=", Base64.DEFAULT);
SecretKey skey = new SecretKeySpec(key, 0, key.length, "AES");
decipher.init(Cipher.DECRYPT_MODE, skey);
CipherOutputStream cos = new CipherOutputStream(decfos, decipher);
while ((read = encfis.read()) != -1) {
cos.write(read);
cos.flush();
}
cos.close();
Utils.logDebug(TAG, "Done decrypting!");
} catch (Exception e) {
Utils.logError(TAG, "TESTING error: " + e.getMessage());
}
這是否意味着它產生的關鍵不是我認爲它是什麼?我沒有使用密碼功能,我首先專門創建了一個密鑰,並使用它。這樣就不會有密碼等哈希值。 – Flyview
@Flyview這意味着文件格式,加密模式和其他細節與您所假設的完全不同,請檢查提供的文檔。事實上,涉及到很多'等等'。 – pvg
謝謝,這很有趣。我對整個加密過程很陌生。我沒有設置任何方式使用AxCrypt。你有什麼建議可以用來加密Windows中的文件,並且更容易在Java中解密它們嗎?如果這是不可能的,我想我也可以在Java中進行加密。 – Flyview