1

オーディオ ファイルを暗号化したい。iPhoneでそれを達成するにはどうすればよいですか?これを行うためのフレームワークはありますか?

これは、ファイルを暗号化するために使用しているコードです。

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 モードで暗号化すると、元のファイル サイズは小さくなります。また、復号化後も、暗号化されたものと同じサイズです。

4

2 に答える 2

1

iOS はCommonCryptoをサポートしています(Mac OSX と同様)。これにより、オーディオを含むあらゆるタイプのデータを暗号化および復号化できます.

アプリケーションで CommonCrypto を使用する方法についていくつか質問があります。

于 2012-01-17T13:42:18.003 に答える
0

彼は元の質問に答えているので、poupou の答えは最終的に信用を得るべきです。上記のコメントで参照コードを尋ねられたので、これを回答として投稿しています。

Obfuscate / Encrypt a Stringから、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];
}

繰り返しますが、これは安全なエンドツーエンドの暗号化技術としてではなく、(私のコメントで述べたように) オーディオ ファイルのカジュアルなコピーを防ぐことを目的としています。

于 2012-01-25T07:52:40.210 に答える