Шифрование аудио файла в iPhone - PullRequest
1 голос
/ 17 января 2012

Я хочу зашифровать аудиофайл; как мне добиться этого в айфоне? Есть ли рамки, чтобы сделать это?

Это код, который я использую для шифрования файла,

NSData *inputData = [NSData dataWithContentsOfFile:localfilePath.path]; 

NSString *encryptKey=[NSString stringWithString:@"nywleS"];





  CCCryptorStatus status = kCCSuccess;
                  NSData *encrypted = [inputData dataEncryptedUsingAlgorithm:kCCAlgorithmAES128 key:encryptKey initializationVector:@"Selwyn" options:0 error:&status];


NSData *decryptedData = [outputData decryptedAES256DataUsingKey:encryptKey error:nil]; 

Но исходный размер файла становится меньше после шифрования в режиме CBS. А также после дешифрования он имеет тот же размер, что и зашифрованный.

Ответы [ 2 ]

1 голос
/ 17 января 2012

iOS поддерживает CommonCrypto (так же, как Mac OSX).Это позволит вам шифровать и дешифровать любые типы данных, включая аудио.

Существует несколько вопросов о том, как использовать CommonCrypto в ваших приложениях.

0 голосов
/ 25 января 2012

Ответ Пупу в конечном итоге заслуживает доверия, поскольку он отвечает на первоначальный вопрос.Я публикую это как ответ, поскольку в комментариях выше меня просили ссылочный код:

С Обфускация / шифрование строки , модифицированной для NSData:

- (NSData *)obfuscate:(NSData *)data withKey:(NSString *)key
{
  NSData *result = [data mutableCopy];

  // Get pointer to data to obfuscate
  char *dataPtr = (char *) [result mutableBytes];

  // Get pointer to key data
  char *keyData = (char *) [[key dataUsingEncoding:NSUTF8StringEncoding] bytes];

  // Points to each char in sequence in the key
  char *keyPtr = keyData;
  int keyIndex = 0;

  // For each character in data, xor with current value in key
  for (int x = 0; x < [data length]; x++) 
  {
    // Replace current character in data with 
    // current character xor'd with current key value.
    // Bump each pointer to the next character
    *dataPtr = *dataPtr++ ^ *keyPtr++; 

    // If at end of key data, reset count and 
    // set key pointer back to start of key value
    if (++keyIndex == [key length])
      keyIndex = 0, keyPtr = keyData;
  }

  return [result autorelease];
}

Опять же, это предназначено для предотвращения случайного копирования аудиофайла (как упомянуто в моих комментариях), а не в качестве безопасного метода сквозного шифрования.

...