簡體   English   中英

使用.Net Framework進行AES文件加密並使用IOS對其進行解密

[英]AES file encryption with .Net Framework and decrypt it with IOS

我們使用.NET框架中實現的AESManaged算法對PDF進行加密。 我使用此處說明的示例來實現C#代碼來加密文件。 現在,我需要使用iPhone應用程序解密該文件。(這是必需的)。 因此,我使用代碼執行操作,但是由於返回錯誤,解密失敗。

'錯誤域= CommonCryptoErrorDomain代碼= -4304“解碼錯誤” UserInfo = 0x127356c0 {NSLocalizedFailureReason =輸入數據未正確解碼或解密,NSLocalizedDescription =解碼錯誤'

有人可以幫我解決這個問題嗎?

我們使用12345678作為加密密鑰。

最可能的問題是從密碼派生實際密鑰(12345678不能直接是AES密鑰-只有8個字節)。

從技術上講,這應該可以工作,盡管我從未測試過,這兩種方法都使用相同的即席格式。

使用經過身份驗證的加密示例進行加密。

//use your secret data you want to encrypt instead.
String secretMessage = "Message";

var rnCryptorHeader = new Byte[]{
                            2, //RNCryptor Format version 2
                            0  //RNCryptor Uses password
                        };

//encryptedString is base64 encoded
var encryptedString = AESThenHMAC.SimpleEncryptWithPassword(secretMessage, 
                                                            password:"1234567891011",      
                                                            nonSecretPayload:rnCryptorHeader);

然后使用RNCryptorNSData + Base64 for IOS解密

//This is the encrypted data passed from .net
NSString *encryptedString = @"AgE8C9E7gsfyOAmSotIOgyLQ0O6mdcuMXXjN/iZa3azym4KVWZAkfykIP6mqMt/qkpfftdB3XQhMkoxtQEM+rA0iHxOvZiNlmA2KJtg6BOnmlg==";

NSData *encryptedData = [NSData dataFromBase64String: encryptedString];
NSError *error;
NSData *decryptedData = [RNDecryptor decryptData:encryptedData
                                    withPassword:@"1234567891011"
                                           error:&error];
NSString *secretMessage = [[[NSString alloc] initWithData:decryptedData
                                                 encoding:NSUTF8StringEncoding] autorelease];

由於您不是在處理字符串而是在直接處理字節,因此,只要確定能正常工作,就從此Objective-c示例和鏈接的c#示例中刪除Base64和utf8編碼/解碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM