我想在 Android 中使用 AES 128 位加密简单地解密加密的 ts 文件。我知道如果我玩 m3u8,那么 Player 可以处理这个问题,但我想直接访问 ts 并且想单独播放这些,所以需要在播放之前对其进行解密。
让我知道可用于相同的合适的 Java 类。
我想在 Android 中使用 AES 128 位加密简单地解密加密的 ts 文件。我知道如果我玩 m3u8,那么 Player 可以处理这个问题,但我想直接访问 ts 并且想单独播放这些,所以需要在播放之前对其进行解密。
让我知道可用于相同的合适的 Java 类。
假设您知道用于加密文件的密钥,您可以使用以下内容:
public static void decrypt() {
try {
Log.d(C.TAG, "Decrypt Started");
byte[] bytes = new BigInteger(<your key>, 16).toByteArray();
FileInputStream fis = new FileInputStream(<location of encrypted file>);
FileOutputStream fos = new FileOutputStream(<location of decrypted file>);
SecretKeySpec sks = new SecretKeySpec(bytes, <encryption type>);
Cipher cipher = Cipher.getInstance(<encryption type>);
cipher.init(Cipher.DECRYPT_MODE, sks);
CipherInputStream cis = new CipherInputStream(fis, cipher);
int b;
byte[] d = new byte[8];
while ((b = cis.read(d)) != -1) {
fos.write(d, 0, b);
}
fos.flush();
fos.close();
cis.close();
Log.d(C.TAG, "Decrypt Ended");
} catch (NoSuchAlgorithmException e) {
Log.d(C.TAG, "NoSuchAlgorithmException");
e.printStackTrace();
} catch (InvalidKeyException e) {
Log.d(C.TAG, "InvalidKeyException");
e.printStackTrace();
} catch (IOException e) {
Log.d(C.TAG, "IOException");
e.printStackTrace();
} catch (NoSuchPaddingException e) {
Log.d(C.TAG, "NoSuchPaddingException");
e.printStackTrace();
}
}
将所有内容替换为适合您文件的内容,一切顺利<
。>