【问题标题】:Encryption of mp3 filesmp3 文件的加密
【发布时间】:2012-05-07 22:43:59
【问题描述】:

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

谢谢

【问题讨论】:

  • 你可以加密它们,只需生成一个 pgp/des/...etc 密钥并加密文件并在播放时解密它们。
  • 如果你加密它们,你必须在播放时解密它们。如果您解密某些内容,则需要密钥,如果您在设备上有密钥,则有人可能会获得该密钥。如果您希望您的文件受到分发保护,请不要分发它。
  • @Greg 不分发不是一个现实的解决方案,这类似于信用卡公司在不分发卡或不提供任何安全性之间进行选择。提供良好的安全性可以大大减少损失,这是一个中间立场。

标签: android ios security encryption mp3


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

【讨论】:

    猜你喜欢
    • 2011-06-26
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-11
    • 1970-01-01
    • 2012-06-18
    相关资源
    最近更新 更多