Iphone 带base64解码的AES256解密不工作
我需要在我的iphone应用程序中执行AES 256解密。该场景是在在线网页中使用AES256位OFB模式对纯文本进行base64编码和加密。 在我的应用程序中,我从该网页中检索加密文本作为查询字符串。这里我已经完成了base64解码和AES256解密。 但是我得到了-4304的身份 我使用了KCCOPIONPKCS7填充。即使我也更改了填充,我也无法得到正确的解密纯文本。仅显示不可读的文本 我已经通过设置B模式使用base64检查AES256加密 下面的代码有两种方法,我用于base64解码和AES256解密Iphone 带base64解码的AES256解密不工作,iphone,objective-c,cryptography,aes,Iphone,Objective C,Cryptography,Aes,我需要在我的iphone应用程序中执行AES 256解密。该场景是在在线网页中使用AES256位OFB模式对纯文本进行base64编码和加密。 在我的应用程序中,我从该网页中检索加密文本作为查询字符串。这里我已经完成了base64解码和AES256解密。 但是我得到了-4304的身份 我使用了KCCOPIONPKCS7填充。即使我也更改了填充,我也无法得到正确的解密纯文本。仅显示不可读的文本 我已经通过设置B模式使用base64检查AES256加密 下面的代码有两种方法,我用于base64解码和
+ (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;
}
有人能帮我用这种方法得到纯文本吗?根据你问题中的事实,base64编码的数据是加密的,而不是该数据的解码变体。因此,您需要对base64编码的数据进行解密,然后对其进行base64解码。文档中说明了导致-4304状态的原因是什么?您看到了吗:出于好奇,您说纯文本是用base64编码的。这并不一定意味着加密的密文是,但您正在将encryptedData设置为base64?