2012-05-07 65 views
2

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

感谢

+0

你可以对它们进行加密,只需生成一个pgp/des/... etc密钥并加密这些文件,并在需要播放时对它们进行解密。 –

+1

如果你加密它们,你必须在播放时解密它们。如果你解密某个东西,你需要密钥,如果你在设备上有密钥,那么有人可能得到那个密钥。如果您希望您的文件受到分发保护,请不要分发它。 – gcochard

+2

@Greg没有发布并不是一个现实的解决方案,类似于信用卡公司选择不发行卡或不提供任何安全性。有一个提供良好安全性的中间地带,可以大大减少损失。 – zaph

回答

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. 

注意,这需要静脉(初始化矢量)和simmple密码不应该被用于密钥。良好的安全性需要超过几个加密例程,它需要很好的密码学知识和通过代码审查。