使用.net框架对AES文件进行加密,并使用IOS进行解密

本文关键字:IOS 解密 加密 AES 文件 net 使用 框架 | 更新日期: 2023-09-27 18:12:29

我们使用。net框架中实现的AESManaged算法加密pdf文件。我使用这里解释的示例来实现c#代码来加密文件。现在我需要使用iPhone应用程序解密该文件。(这是要求)。所以我使用这个代码来做,但解密失败,返回一个错误。

'Error Domain=CommonCryptoErrorDomain Code=-4304 "Decode Error"UserInfo=0x127356c0 {nslocalizedfailurerreason =输入数据失败解码或解密正确,NSLocalizedDescription=解码错误'

有人能帮我解决这个问题吗?

我们使用12345678作为加密密钥

使用.net框架对AES文件进行加密,并使用IOS进行解密

最有可能的问题是在从密码中导出实际密钥(12345678不能直接是AES密钥-它只有8个字节)。

从技术上讲,这应该可以工作,尽管我从未测试过,这两种方法使用相同的ad-hoc格式。

使用我的认证加密示例进行加密。

//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);

然后使用RNCryptor和NSData+Base64为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编码/解码,一旦你确定这是工作的