0

とりわけサウンドファイルを再生するアプリに取り組んでいます。私の問題は、サウンドファイルがコマンドラインツールで暗号化されていることです。コマンドラインツールは、ファイルとパスワードを提供するだけで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ツールがこれに最適でない場合は、他の提案を喜んで歓迎します。

4

2 に答える 2

1

なぜそのAESCryptアプリケーションに固執するのですか?カスタムヘッダーを暗号化されたファイルに書き込みます。彼らはソースコードを配布し、これを解読する方法について十分な情報を提供します(そして、おそらくあなたは彼らのソースを再利用することができるでしょう)。AES暗号ソースコードでAESCryptWorkerThreads.cppを確認してください。

于 2013-01-21T17:16:40.523 に答える
0

AESCrypt形式には、重要な構成情報が含まれています。フォーマットのほとんどは、彼らのサイト(aes_file_format.html)で詳しく説明されています。残念ながら、このページではカスタムKDFについては説明していません。encrypt_stream次の場所でそれらの関数を使用またはリバースエンジニアリングする必要がありますaescrypt.c

// Hash the IV and password 8192 times
memset(digest, 0, 32);
memcpy(digest, IV, 16);
for(i=0; i<8192; i++)
{
    sha256_starts(  &sha_ctx);
    sha256_update(  &sha_ctx, digest, 32);
    sha256_update(  &sha_ctx,
                    (unsigned char*)passwd,
                    (unsigned long)passlen);
    sha256_finish(  &sha_ctx,
                    digest);
}

CommonCryptorを使用しないため、ハードウェアに最適化されたコードが必要な場合は、CommonCryptorでこの形式を自分で再実装する必要があります。

復号化コードにはIV、KDF、HMACがないため、実際にその方法で暗号化されたものは非常に安全ではないことに注意してください。AESCryptは適切なIVとHMACを提供し、そのKDFは標準ではありませんが安全である可能性が高いため、妥当な選択です。

于 2013-01-21T19:43:06.937 に答える