0
我必須在我的php服務器上生成加密的密鑰,並將它發送給ipad應用程序進行解密。PHP加密和objective-c解密
我所做的PHP服務器端:
$iv = mcrypt_create_iv(32);
$privatEencryptKey = "1111";
$data = "2222";
$encryptedData = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $privateEncryptKey, base64_encode($data), MCRYPT_MODE_CBC, $iv);
$decryptedData = base64_decode(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $privateEncryptkey, $encryptedData, MCRYPT_MODE_CBC, $iv));
echo base64_encode($encryptedData); //output = WT7LorzZ1EQo2BeWxawW3Q==
echo $decryptedData; // output = 2222
echo base64_encode($iv); // output = fZTj4BxWSdCYQW/scUHvx9QoiTNXmxNrGWb/n7eFkR4=
和我導入sercurity.framwork的Xcode和我添加第三方支持Base64(編碼解碼&)我用的是(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,
0,
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;
}
+ (void) testCipher{
NSData *dataIn = [[@"WT7LorzZ1EQo2BeWxawW3Q==" base64DecodedString] dataUsingEncoding:NSUTF8StringEncoding];
NSData *key = [@"1111" dataUsingEncoding:NSUTF8StringEncoding];
NSData *iv = [[@"fZTj4BxWSdCYQW/scUHvx9QoiTNXmxNrGWb/n7eFkR4=" base64DecodedString] dataUsingEncoding:NSUTF8StringEncoding];
NSData *dataOut = [Utils doCipher:dataIn iv:iv key:key context:kCCDecrypt];
NSString* strOut = [[[NSString alloc] initWithData:dataOut
encoding:NSUTF8StringEncoding] base64DecodedString];
NSLog(@"%@", strOut);
}
我得到斯特勞特的零..... :(
任何幫助,請......
按此順序提供:加密Base64數據,解密Base64數據,解密字符串。 – zaph
提供的密鑰是32位,但AES128需要128位。 iv是256位,但只需要128位。 – zaph
謝謝Zaph,對不起,但我是密碼學領域的新手....如何生成128位密鑰和IV(在PHP中用於加密)並傳遞生成的密鑰以重用它們在目標c中解密? ? ....我所做的是回聲encoded64 key和iv到我的測試page.php並將這些值複製粘貼到我的目標c類中並解碼這些值,並在將它們轉換爲NSData對象後將它們傳遞給CCCrypt函數... am我對嗎? – Saeed