为什么每次尝试使用iOS SDK解密AES数据时都会得到不同的结果?
我正在研究AES加密和解密。 我给单一数据和单一密钥解密,但每次都得到不同的输出 我是这样使用的:为什么每次尝试使用iOS SDK解密AES数据时都会得到不同的结果?,ios,objective-c,aes,Ios,Objective C,Aes,我正在研究AES加密和解密。 我给单一数据和单一密钥解密,但每次都得到不同的输出 我是这样使用的: +(NSData*)decryptData:(NSData*)data key:(NSData*)key iv:(NSData*)iv { NSData* result = nil; // setup key unsigned char cKey[FBENCRYPT_KEY_SIZE]; bzero(cKey, sizeof(cKey)); [key getBytes:cKey length:F
+(NSData*)decryptData:(NSData*)data key:(NSData*)key iv:(NSData*)iv
{
NSData* result = nil;
// setup key
unsigned char cKey[FBENCRYPT_KEY_SIZE];
bzero(cKey, sizeof(cKey));
[key getBytes:cKey length:FBENCRYPT_KEY_SIZE];
// setup iv
char cIv[FBENCRYPT_BLOCK_SIZE];
bzero(cIv, FBENCRYPT_BLOCK_SIZE);
if (iv) {
[iv getBytes:cIv length:FBENCRYPT_BLOCK_SIZE];
}
// setup output buffer
size_t bufferSize = [data length] + FBENCRYPT_BLOCK_SIZE;
void *buffer = malloc(bufferSize);
// do decrypt
size_t decryptedSize = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt,
FBENCRYPT_ALGORITHM,
kCCOptionECBMode,
cKey,
FBENCRYPT_KEY_SIZE,
cIv,
[data bytes],
[data length],
buffer,
bufferSize,
&decryptedSize);
if (cryptStatus == kCCSuccess) {
result = [NSData dataWithBytesNoCopy:buffer length:decryptedSize];
} else {
free(buffer);
NSLog(@"[ERROR] failed to decrypt| CCCryptoStatus: %d", cryptStatus);
}
return result;
}
没有任何示例数据等的最佳猜测是密钥或iv的大小不正确和/或填充或模式不同。给出一些示例,包括密钥、iv、加密数据和解密数据。还有,为什么使用“FBENCRYPT\u KEY\u SIZE”而不是Apple定义的?这是否也是与另一种语言(如php)的互操作性问题?