とりわけサウンドファイルを再生するアプリに取り組んでいます。私の問題は、サウンドファイルがコマンドラインツールで暗号化されていることです。コマンドラインツールは、ファイルとパスワードを提供するだけでaescrypt.comにあります。私はaescrypt.comのjavaコードを使用して、Androidアプリでファイルを正常に復号化しましたが、iOSで機能しないようにすることはできません。
ファイルのすべてのバイトと、ファイルのヘッダーを含まないバイトを復号化しようとしました。バイトの結果セットが返されますが、再生されず、サウンドの推定長さは実際の長さの約4分の1です。
NSRange range = NSMakeRange(0, self.length);
unsigned char* encrypteddata = malloc(range.length);
[self getBytes:encrypteddata range:range];
size_t outSize;
unsigned char* result = malloc(range.length + 16);
CCCryptorStatus status = CCCrypt(kCCEncrypt, kCCAlgorithmAES128, 0x00, decryptkey, sizeof(decryptkey), nil, encrypteddata, self.length, result, self.length + 16, &outSize);
NSData *returnData = nil;
if (status == kCCSuccess) {
returnData = [NSData dataWithBytesNoCopy:result length:outSize];
}
復号化キーは、ファイルの暗号化に使用されるパスワードのバイトです。
私は少なくとも1週間は解決策に取り組んできましたが、進展はありませんでした。間違って実行できることはたくさんあり、可能な(そして不可能な)組み合わせもたくさんあります。
更新: 私が必要としているのは、お客様がサウンドファイルを暗号化するのに十分シンプルで、AndroidとiOSの両方のアプリがもう一方のエンドで復号化するのも簡単なツールです。非常に安全である必要はありません。Androidの一般ユーザーがディスクからファイルを開いて再生するのを防ぐだけで済みます。aescrypt.comツールがこれに最適でない場合は、他の提案を喜んで歓迎します。