我试图在客观C到加密的AES256一个JSON发送到一台服务器和PHP中使用下面的行解密马赫:AES256加密用PHP rijndael_256 ECB_MODE
MCRYPT_DECRYPT(MCRYPT_RIJNDAEL_256, $ key,base64_decode($ ha),MCRYPT_MODE_ECB,NULL));
花了好几天的搜索和测试,我没有得到结果。我使用的代码是这样的:
- (NSString *)AES256EncryptData:(NSData *) datos {
//NSData * datos = [json dataUsingEncoding:NSUTF8StringEncoding];
UIApplication *aplicacion = [UIApplication sharedApplication];
AppDelegate *delegate = (AppDelegate *) aplicacion.delegate;
char keyPtr[kCCKeySizeAES256+1];
bzero(keyPtr, sizeof(keyPtr));
[delegate.appKey getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding ];
NSUInteger dataLength = [datos length];
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);
size_t numBytesEncrypted;
CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt,
kCCAlgorithmAES128,
kCCOptionECBMode + kCCOptionPKCS7Padding,
keyPtr,
kCCKeySizeAES256,
NULL,
[datos bytes],
[datos length],
buffer,
bufferSize,
&numBytesEncrypted);
if (cryptStatus == kCCSuccess) {
NSData *returnData = [[NSData alloc] initWithBytes:buffer length:numBytesEncrypted];
return [returnData base64EncodedStringWithOptions:0];
}
free(buffer);
return nil;
}
是的,密钥长度为32个字节。我改变了键的类型,但结果是一样的。任何想法设置填充?我测试过的所有内容都是错误的,结果为NULL – 2014-10-06 17:15:10
我发现我可以使用Rijndael_128而不是Rijndael_256解密PHP中的结果。 – 2014-10-07 07:22:43