2012-05-07 2 views
2

J'ai besoin de développer une application mobile (android | iphone) qui télécharge de la musique mp3 et stocke sur userphone, mais je dois m'assurer que l'utilisateur ne distribue pas ce mp3. J'ai besoin d'un moyen de crypter ces fichiers.
Y a-t-il quelque chose que je peux faire?Cryptage de fichiers mp3

Merci

+0

bien vous pouvez les crypter, il suffit de générer une clé pgp/des/... etc et crypter les fichiers et les décrypter quand il est temps de jouer. –

+1

Si vous les cryptez, vous devez les décrypter au moment de la lecture. Si vous déchiffrez quelque chose, vous avez besoin de la clé, et si vous avez la clé sur l'appareil, il est possible que quelqu'un obtienne cette clé. Si vous voulez que votre fichier soit protégé, ne le distribuez pas. – gcochard

+2

@Greg ne distribuant pas n'est pas une solution réaliste, c'est comme choisir de carte de crédit choisir entre ne pas distribuer des cartes ou ne pas fournir de sécurité. Il existe un moyen d'assurer une bonne sécurité qui peut réduire considérablement les pertes. – zaph

Répondre

1

Vous pouvez utiliser les fonctions CommonCrypto pour crypter/décrypter avec AES et enregistrez la clé dans le trousseau.

Voici quelques exemples de code:

#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. 

Notez que cela nécessite un iv (vecteur d'initialisation) et un mot de passe simmple ne doit pas être utilisé pour une clé. Une bonne sécurité nécessite plus que quelques routines crypto, cela nécessite une bonne connaissance de la cryptographie et une revue de code.

Questions connexes