我需要开发一个移动应用程序 (android|iphone) 下载一些 mp3 音乐并存储在用户手机上,但我需要确保用户不会分发该 mp3。我需要一种方法来加密这些文件。
有什么我可以做的吗?
谢谢
最佳答案
您可以使用 CommonCrypto 函数使用 AES 加密/解密并将 key 保存在钥匙串(keychain)中。
下面是一些示例代码:
#import <CommonCrypto/CommonCryptor.h>
+ (NSData *)doCipher:(NSData *)dataIn
iv:(NSData *)iv
key:(NSData *)symmetricKey
context:(CCOperation)encryptOrDecrypt
{
CCCryptorStatus ccStatus = kCCSuccess;
size_t cryptBytes = 0; // Number of bytes moved to buffer.
NSMutableData *dataOut = [NSMutableData dataWithLength:dataIn.length + kCCBlockSizeAES128];
ccStatus = CCCrypt( encryptOrDecrypt,
kCCAlgorithmAES128,
kCCOptionPKCS7Padding,
symmetricKey.bytes,
kCCKeySizeAES128,
iv.bytes,
dataIn.bytes,
dataIn.length,
dataOut.mutableBytes,
dataOut.length,
&cryptBytes);
if (ccStatus != kCCSuccess) {
NSLog(@"CCCrypt status: %d", ccStatus);
}
dataOut.length = cryptBytes;
return dataOut;
}
// Also add Security.framework to your project.
请注意,这需要一个 iv(初始化向量)并且不应将简单的密码用作 key 。良好的安全性需要的不仅仅是一些加密例程,它需要良好的密码学知识和完整的代码审查。
关于android - mp3文件的加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10490150/