1
我需要在我的iPhone應用程序中執行AES 256解密。這種情況是,純文本是使用AES256位(OFB模式)在聯機網頁中進行base64編碼和加密的。 在我的應用程序中,我從該網頁獲取加密文本作爲查詢字符串。這裏我已經完成了base64解碼和AES256解密。 但我得到-4304狀態。我使用了kCCOptionPKCS7Padding
。即使我也改變填充,我沒有得到正確的解密純文本。只顯示不可讀的文字。AES256解密與base64解碼不起作用
我已經使用http://isv.appspot.com/app/enc通過設置OFB模式來檢查base64的AES256加密。
以下代碼對我使用的base64解碼和解密AES256兩種方法
+ (NSString*)decryptBase64String:(NSString*)encryptedBase64String keyString:(NSString*)keyString
{
NSData* encryptedData = [NSData dataFromBase64String:encryptedBase64String];
NSLog(@"encryptedData %@",encryptedData);
// NSData *strData = [encryptedData subdataWithRange:NSMakeRange(0, [encryptedData length] - 2)];
// NSString* newStr = nil;
NSData* keyData = [keyString dataUsingEncoding:NSUTF8StringEncoding];
NSData* data = [self decryptData:encryptedData
key:keyData
iv:nil];
// newStr = [NSString stringWithCString:[strData bytes] encoding:NSUTF8StringEncoding];
if (data) {
return [[[NSString alloc] initWithData:data
encoding:NSASCIIStringEncoding] autorelease];
} else {
return nil;
}
}
+ (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,
kCCOptionPKCS7Padding,
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;
}
誰能幫助我得到使用這種方法的純文本?
什麼文件說什麼導致-4304狀態? – rossum
你見過這個:http://stackoverflow.com/questions/7408754/unable-to-decrypt-data-encoded-via-openssl-on-iphone –
出於好奇,你說純文本是用base64編碼的。這並不一定意味着加密的密文是,但是您將加密數據設置爲base64? – trumpetlicks