0
我嘗試使用CCCrypt的方法,但我得到的Xcode 3.2.6時,Xcode 4和Xcode的5個不同的結果;都有Mac OS X 10.6。 我用下面的代碼來解密數據CCCrypt上的Xcode 4和Xcode的5不起作用(得到不同的結果)
- (NSData*)decryptData:(NSData*)data key:(NSData*)key iv:(NSData*)iv
{
NSData* result = nil;
// setup key
unsigned char cKey[kCCKeySizeAES256];
bzero(cKey, sizeof(cKey));
cKey[0] = 0;
[key getBytes:cKey length:kCCKeySizeAES256];
// setup iv
char cIv[kCCBlockSizeAES128];
bzero(cIv, kCCBlockSizeAES128);
if (iv) {
[iv getBytes:cIv length:kCCBlockSizeAES128];
}
// setup output buffer
size_t bufferSize = [data length] + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);
// do decrypt
size_t decryptedSize = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt,
kCCAlgorithmAES128,
kCCOptionPKCS7Padding,
cKey,
kCCKeySizeAES256,
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;
}
在Xcode中3.2.6我得到的實際結果,而在Xcode 5的結果是「」。
確保你的操作系統上運行10.6 Xcode的5 ..? – Jay
最好的選擇:iv或者key或者兩者都不正確,可能會縮短,所以一些隨機數據正在進入。 NSLog記錄它們並進行比較。此外,差異不是Xcode版本,而是使用的SDK。簡而言之,CCCrypt的作品,重新認爲你的代碼。 – zaph
Lion Lion上的Xcode5和Lion上的XCode4.3.3都有base sdk macosx10.6。我在這個不同的平臺上執行相同的代碼。 – sam