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