I've searched for a lot of articles online and only find [iOS 3DES with ECB return half correct data ] on Stackoverflow, however when I copy the code in this article, the complier returns a different encrypted result with that I got from the online encrypt tools.
Can anyone help me here?
Thanks
plus, I can't really read obj-c. Just turned to swift from javascript and PHP.
===========Edit===========
Now, I changed my method to AES using swift 1.2. Code is listed as follows(iv and key are kept static for test):
let key:String = "12345678901234567890123456789012" let iv:String = "12345678901234567890123456789012" let keyData: NSData! = (key as NSString).dataUsingEncoding(NSUTF8StringEncoding) as NSData! let keyBytes = UnsafePointer<UInt8>(keyData.bytes) let keyLength = size_t(kCCKeySizeAES256) let plainData: NSData! = (plainText as NSString).dataUsingEncoding(NSUTF8StringEncoding) as NSData! let dataLength = size_t(plainData.length) let dataBytes = UnsafePointer<UInt8>(plainData.bytes) var bufferData = NSMutableData(length: Int(dataLength) + kCCBlockSizeAES128)! var bufferPointer = UnsafeMutablePointer<UInt8>(bufferData.mutableBytes) let bufferLength = size_t(bufferData.length) let operation: CCOperation = UInt32(kCCEncrypt) let algoritm: CCAlgorithm = UInt32(kCCAlgorithmAES128) let options: CCOptions = UInt32(kCCOptionPKCS7Padding) let ivData: NSData! = (iv as NSString).dataUsingEncoding(NSUTF8StringEncoding) as NSData! let ivPointer = UnsafePointer<UInt8>(ivData.bytes) var numBytesEncrypted: size_t = 0 var cryptStatus = CCCrypt(operation, algoritm, options, keyBytes, keyLength, ivPointer, dataBytes, dataLength, bufferPointer, bufferLength, &numBytesEncrypted) And here's my PHP code:
function addPkcs7Padding($string) { $cipher = MCRYPT_RIJNDAEL_256; $mode = MCRYPT_MODE_CBC; $blocksize = mcrypt_get_iv_size($cipher, $mode); $len = strlen($string); $pad = $blocksize - ($len % $blocksize); $string .= str_repeat(chr($pad), $pad); return $string; } function aes256cbcEncrypt($str, $iv, $key ) { return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, addPkcs7Padding($str) , MCRYPT_MODE_CBC, $iv)); }