title: Salt a key for secure encryption Cocoa?
body: <p>I was reading a tutorial on how to salt a key to make your encryption secure, but couldn't make much of it. I don't know a lot about cryptography, and need some help. I am using commoncrypto to encrypt files, and am done, except for the fact that it isn't secure... </p>
  
  <p>This is what I have:</p>
  
  <pre><code>- (NSData *)AES256EncryptWithKey:(NSString *)key
  {
     // 'key' should be 32 bytes for AES256, will be null-padded otherwise
     char keyPtr[kCCKeySizeAES256 + 1]; // room for terminator (unused)
     bzero( keyPtr, sizeof( keyPtr ) ); // fill with zeroes (for padding)
  
      NSLog(@"You are encrypting something...");
  
     // fetch key data
     [key getCString:keyPtr maxLength:sizeof( keyPtr ) encoding:NSUTF8StringEncoding];
  
     NSUInteger dataLength = [self length];
  
     //See the doc: For block ciphers, the output size will always be less than or 
     //equal to the input size plus the size of one block.
     //That's why we need to add the size of one block here
     size_t bufferSize = dataLength + kCCBlockSizeAES128;
     void *buffer = malloc( bufferSize );
  
     size_t numBytesEncrypted = 0;
     CCCryptorStatus cryptStatus = CCCrypt( kCCEncrypt, kCCAlgorithmAES128,     kCCOptionPKCS7Padding,
                                        keyPtr, kCCKeySizeAES256,
                                        NULL /* initialization vector (optional) */,
                                        [self bytes], dataLength, /* input */
                                        buffer, bufferSize, /* output */
                                        &amp;numBytesEncrypted );
     if( cryptStatus == kCCSuccess )
     {
        //the returned NSData takes ownership of the buffer and will free it on deallocation
    return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];
  
     }
  
     free( buffer ); //free the buffer
     return nil;
  }
  </code></pre>
  
  <p>If someone can help me out, and show me exactly how I would implement salt, that would be great! Thanks again!</p>