0

iOS で再生する必要がある aes で暗号化された mp3 ファイルがあります。セキュリティ上の理由から、ファイルをディスクに復号化することはできません。また、メモリの制約により、ファイルをメモリに復号化することもできない可能性があります。

暗号化されたファイルを直接再生する方法、またはすべてをメモリにロードせずにプレーヤーにストリーミングする方法はありますか? 私は本当にこれで途方に暮れています.どこから始めればいいのかさえわかりません.AVAudioPlayerを使ってファイルを再生していますが、私がやりたいことをするのに十分な柔軟性がないと思います.

4

3 に答える 3

3

AVAudioPlayer がどのように機能するかはわかりませんが、この問題を解決する唯一の方法は、プレーヤーがアクセスできる何らかの抽象化を提供することです。プレーヤーが「ファイル」オブジェクトにしかアクセスできない場合は、運が悪く、別のプレーヤーを使用する必要があります。プレーヤーが何らかの入力ストリームにアクセスできる場合 (アクセスできると思われます)、ファイルからストリームを作成し (「ファイル ストリーム」と呼びます)、ファイル ストリームから復号化ストリームを作成できます。復号化ストリームを作成するために既存のコード (crypto++ など) を使用する必要がある場合に限り、AES 暗号化を理解する必要があります。

疑似コードでは、次のようになります。

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

内部的に、AVAudioPlayer は復号化ストリームからデータのチャンクを読み取ります。これにより、ファイル ストリームからデータが取得され、ファイルからデータが取得されます。データは、decryptionstream で一度に 1 つのチャンクで復号化されます。

于 2012-06-15T14:44:43.183 に答える