iOS和.NET的AES加密/解密

3

我在iOS应用中使用CocoaSecurity和RNCryptor对NSString进行加密,然后在服务器端(.NET)尝试使用网络上找到的许多函数进行解密,但没有成功。此外,AES解密在线工具也无法解密。

有人可以提供一个使用AES256在iOS上对NSString进行加密,并在.NET(VB或C#)中进行解密的工作示例吗?

2个回答

2
感谢zaph。您的回答对我帮助很大。
正如建议的那样,在iOS上使用RNCryptor,在.Net上使用RNCryptor-cs,我能够对来自iOS的数据进行加密,然后在.Net上解密它们。
下面是我实现这一目标的一个小例子:
在iOS端:
NSData* data = [@"mySecretMessage" dataUsingEncoding:NSUTF8StringEncoding];
NSError* error;
NSData* encrypted = [RNEncryptor encryptData:data
                                withSettings:kRNCryptorAES256Settings
                                    password:@"mySecretPassword"
                                       error:&error];
NSString* encryptedDataAsString = [encrypted base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithCarriageReturn];
//encryptedDataAsString = AwFnpL/jHjAYNkNnfBRUwl0pMwyHnM8uo2dojFk+rC7x9LnaFz+T1KaTjxSXoxF6Q4mzT+yl5RLuKZZuaiDlY5dXBw6TEyEXNJ8CxG9ZDZB3nQ==

在 .Net 方面(使用 Visual Basic):
Dim decryptor As RNCryptor.Decryptor = New RNCryptor.Decryptor

MessageBox.Show(decryptor.Decrypt("AwFnpL/jHjAYNkNnfBRUwl0pMwyHnM8uo2dojFk+rC7x9LnaFz+T1KaTjxSXoxF6Q4mzT+yl5RLuKZZuaiDlY5dXBw6TEyEXNJ8CxG9ZDZB3nQ==", "mySecretPassword"))
//MessageBox output = mySecretMessage

我尝试了上面的代码,但是没有得到与pod 'RNCryptor-objc'相同的字符串,我不明白这是什么意思? - mgyky

1
如果你在iOS上使用RNCryptor,在.NET上使用RNCryptor-cs。RNCryptor不仅仅是加密/解密,它是一个完整的安全协议,请参阅RNCryptor-Spec了解有关RNCryptor协议的详细信息。RNEncryptor正在积极维护。 CocoaSecurity并不可怕,但我不会使用它,它使用SHA从密码中派生加密密钥,这是不好的,当前的做法是使用诸如PBKDF2之类的密钥派生函数,这样更安全。你必须匹配.NET上的协议,而这并没有详细说明,你将不得不阅读代码来弄清楚。它已经一年多没有更新了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接