我正在开发一个可以播放声音文件的应用程序。我的问题是声音文件是使用命令行工具加密的,该工具可以在aescrypt.com上找到,只需提供文件和密码。我已经使用 aescrypt.com 上的 java 代码成功解密了 android 应用程序中的文件,但我一辈子都不能让它在 iOS 中工作。
我试图解密文件的所有字节以及不包括文件头的字节。我得到了一组字节的结果,但它不会播放,并且声音的估计长度约为实际长度的四分之一。
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];
}
解密密钥只是用于加密文件的密码中的字节。
我已经研究解决方案至少一周了,但没有取得任何进展。有很多事情可以做错,有很多可能(和不可能)的组合。
更新: 我需要的是一个足够简单的工具,我们的客户可以使用它来加密他们端的声音文件,并且对于 Android 和 iOS 上的应用程序在另一端解密也很简单。它不需要非常安全,它只需要防止Android上的普通用户打开并播放光盘中的文件。如果 aescrypt.com 工具不适合此,我很高兴欢迎其他建议。