【发布时间】:2014-03-30 12:10:49
【问题描述】:
我正在尝试使用 AES 加密算法解密文档。
我从 enc 文件中获取密钥并在算法中使用它。
当我尝试解密文档时,我无法解密少数格式的文档,例如docx, xlsx, pptx and txt 文件。请在下面找到我的代码。
- (NSData *)AES256Decrypt
{
NSString* path = [[NSBundle mainBundle] pathForResource:<filename> ofType:@"enc"];
// fetch key data from the key file
NSData *keyData = [NSData dataWithContentsOfFile:path];
NSUInteger dataLength = [self length];
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);
size_t numBytesDecrypted = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmAES128, kCCOptionECBMode,
[keyData bytes], kCCKeySizeAES256,
NULL
[self bytes], dataLength, /* input */
buffer, bufferSize, /* output */
&numBytesDecrypted);
if (cryptStatus == kCCSuccess)
{
return [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted];
}
free(buffer);
return nil;
}
我将上述方法添加为 NSData 的类别。
我尝试在客户端进行加密和解密。即使该文件也无法正确解密。当我尝试打开解密文件时,使用 QLPreviewController 查看文档时出现office open xml word processing document 错误。
我无法找到仅在少数文档中发生这种情况的原因。谁能帮我解决这个问题。 谢谢
【问题讨论】:
标签: ios iphone objective-c encryption aes