在iOS中播放encryption的mp3

我有一个encryption的MP3文件,我需要在iOS中播放; 由于安全原因,我无法将文件解密到磁盘,并且由于内存限制,我可能无法将其解密到内存。

有没有办法直接播放encryption文件,或将其stream式播放到播放器而不将其全部加载到内存中? 我真的对此感到茫然,我甚至不知道从哪里开始……我正在使用AVAudioPlayer播放文件,但我猜测它不够灵活,无法做到我想要的。

我不知道AVAudioPlayer是如何工作的,但解决这个问题的唯一方法是提供玩家可以访问的某种抽象。 如果玩家只能访问“文件”对象,那么运气不好,必须使用其他玩家。 如果播放器可以访问某种types的inputstream(我猜想它可以),则可以从该文件创build一个stream(称为“文件stream”),并从文件stream创build一个解密stream。 只有在您需要使用已存在的代码(如crypto ++)来创build解密stream时,您才需要理解AESencryption。

在psuedodcode中,它看起来像这样:

filestream fs = new filestream( path ) decryptionstream ds = decryptionstream( fs, decryptionkeydata ) AVAudioPlayer.open( ds ); AVAudioPlayer.play() 

在内部,AVAudioPlayer将从解密stream读取数据块,这将从文件stream中提取数据,这将从文件中提取数据。 数据将在解密stream中一次解密一个块。

首先,您需要了解AESencryption如何工作 。

如果不解密,就不能播放encryption文件,因为encryption文件只是一些垃圾数据。 在解密之前,您不能读取或播放它。

我不知道你如何encryption你的文件,以及如何获得解密密钥,但你的第一步是获得解密过程的对称密钥。