我試圖使用AES加密算法解密文檔。針對少數文檔格式的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
錯誤。
我無法找到爲什麼只發生少量文件的原因。任何人都可以幫助我解決這個問題。 感謝
keyData字節是密碼,[self bytes]是文檔。 [NSData dataWithContentsOfFile:path]是我獲取算法密鑰的enc文件(密鑰文件)的內容。 [self bytes]是加密文檔的內容。 – RAJA
@RAJA好的,我現在明白了。見編輯答案 – Merlevede
雅。我也在項目中使用了相同的內容。現在我需要使用enc文件中的密鑰。當我嘗試使用它不能單獨解密幾個文件。這是我的問題。 – RAJA