我需要开发一个下载一些 mp3 音乐并存储在用户手机上的移动应用程序 (android|iphone),但我需要确保用户不会分发该 mp3。我需要一种加密这些文件的方法。
有什么我可以做的吗?
谢谢
我需要开发一个下载一些 mp3 音乐并存储在用户手机上的移动应用程序 (android|iphone),但我需要确保用户不会分发该 mp3。我需要一种加密这些文件的方法。
有什么我可以做的吗?
谢谢
您可以使用 CommonCrypto 函数通过 AES 加密/解密并将密钥保存在钥匙串中。
这是一些示例代码:
#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(初始化向量),并且不应将简单密码用于密钥。良好的安全性需要多个加密例程,它需要良好的密码学知识和完整的代码审查。