2

我需要开发一个下载一些 mp3 音乐并存储在用户手机上的移动应用程序 (android|iphone),但我需要确保用户不会分发该 mp3。我需要一种加密这些文件的方法。
有什么我可以做的吗?

谢谢

4

1 回答 1

1

您可以使用 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(初始化向量),并且不应将简单密码用于密钥。良好的安全性需要多个加密例程,它需要良好的密码学知识和完整的代码审查。

于 2012-05-07T22:47:28.767 回答