android - mp3文件的加密

标签 android ios security encryption mp3

我需要开发一个移动应用程序 (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/

相关文章:

node.js - 保持用户匿名 - 仅安全数据库选项 - 一般想法?

security - 如何将ansible_become_pass存储在保管库中以及如何使用它?

安卓蓝牙耳机音量

ios - UITextView 上的 NSLineBreakByTruncatingTail 删除换行符

android - 如何从 PlayN 调用 native (Android) 函数?

ios - iOS 设备越狱后是否安全?

ios - iOS Scrumdinger 教程中的 ThemePicker 不显示 ThemeView 颜色

security - 在前端测试中存储凭据的安全方法

android - 如何限制 Android 中 View 的翻译动画的边界?

android - 访问第二个项目的 "Remote config"