-3

我想在 Android 中使用 AES 128 位加密简单地解密加密的 ts 文件。我知道如果我玩 m3u8,那么 Player 可以处理这个问题,但我想直接访问 ts 并且想单独播放这些,所以需要在播放之前对其进行解密。

让我知道可用于相同的合适的 Java 类。

4

1 回答 1

1

假设您知道用于加密文件的密钥,您可以使用以下内容:

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();
    }
}

将所有内容替换为适合您文件的内容,一切顺利<>

于 2013-01-12T03:03:33.243 回答