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();
}
}
<
との間のすべてを>
ファイルに適したものに置き換えれば、準備完了です。