gpt4 book ai didi

java - 安卓加密音频播放器

转载 作者:太空狗 更新时间:2023-10-29 16:29:58 34 4
gpt4 key购买 nike

我将如何在音频播放器 android 应用程序中播放一组加密的音频文件?

我有一个应用程序项目,我将在用户设备上存储一组加密的音频内容。在这种情况下,单个音频内容(例如:播客)将包含多个加密文件。该应用程序充当音频播放器,用户通过它收听此音频内容。为了获得良好的用户体验,整个内容(播客)应该从一个文件无缝播放到另一个文件。这非常适用于使用 android 的 MediaPlayer 类的普通音频文件。

为了安全措施,在任何时候都不应以用户可以通过我的应用程序以外的任何其他方式访问此文件的方式(即使在已获得 root 权限的设备上)以用户设备存储中存在任何解密文件的方式出现。

要使用的加密类型尚未确定,因此我愿意接受任何最适合这种情况的算法。

我考虑过在播放每个文件之前对其进行解密。文件大小最大为 25MB,此类文件的 AES 加密/解密大约需要 300 毫秒,因此不会对用户体验造成太大影响。

我在这里看到两种不同的解密方法存在两个问题:

  1. 如果我解密一个文件并将其作为普通音频文件存储在设备上,用户将能够访问它(root 设备)并在我的应用程序之外使用它。
  2. 如果我解密一个文件并将其作为字节数组保存在系统内存中,我该如何将其回放给用户?我没有找到使用 MediaPlayer 执行此操作的方法,也没有找到任何其他允许开箱即用的库。也许可以修改某些音频流媒体库以播放解密的文件流?

最佳答案

在我看来,最简单的方法是使用 ExoPlayer,它是由 Google 开发的开源媒体播放器。他们在这个项目中处理了很多边缘案例,它是一个不错且可靠的播放器。

最重要的是,您的需求很容易实现,几乎是开箱即用的。

您只需使用 AesCipherDataSource 包装一个 FileDataSource 来加载您的播放器。

因此,您的文件使用 AesCihper 在本地加密,并由播放器本身逐 block 动态解密。

这是他们开发指南的链接:https://google.github.io/ExoPlayer/guide.html和 AesCipher http://google.github.io/ExoPlayer/doc/reference/com/google/android/exoplayer2/upstream/crypto/AesCipherDataSource.html

关于java - 安卓加密音频播放器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41980696/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com