如何将 iOS 中的加密字符串发送到 .net

How to send the encrypted string from iOS to .net

我使用下面的代码AES加密,

NSString *encryptedString =  [AESCrypt encrypt:@"str" password:@"password"];

相同的字符串在 .net 服务器中未正确解码。 .net 服务器中使用的代码如下,

AesEncryption = new RijndaelManaged();
AesEncryption.KeySize = 256;
AesEncryption.BlockSize = 128;
AesEncryption.Mode = CipherMode.CBC;
AesEncryption.Padding = PaddingMode.PKCS7;
string keyStr = "cGFWDwzc3dvcmQAAAAAAwzc3==";
string ivStr = "aEdcGFzc3dvcmQwzc3AvcmQAAAAA==";
byte[] ivArr = Convert.FromBase64String(keyStr);
byte[] keyArr = Convert.FromBase64String(ivStr);
AesEncryption.IV = ivArr;
AesEncryption.Key = keyArr;

你能帮我解决这个问题吗?

您是否尝试使用以下代码使用 EncodeToPercentEscapeString 来加密您的字符串。

-(NSString *) encodeToPercentEscapeString
{
    return (__bridge_transfer NSString *) CFURLCreateStringByReplacingPercentEscapes(NULL,
                                                                            (CFStringRef) self,
                                                                            ((CFStringRef) @" !*'();:@&=+$,/?%#[]"));
}

NSString *password = @"password_123";
NSString *encryptString = [password encodeToPercentEscapeString];

我们在 iOS 中确实有 AES 、 SHA 、 MDM5 等加密技术来加密 data/strings 以确保空中传输数据的安全性,

具体来说,我更喜欢使用 AES 256 加密,您可以按照 URL 中给出的字符串加密教程进行操作:http://robnapier.net/aes-commoncrypto

加密字符串后,您可以使用网络服务将其发送到 .net/ 后端。

要使用 Web 服务将数据发送到 .net,此处问题中有 3 个信誉的答案:Send parameters to a web service 将对您有所帮助。

首先,您混淆了 iv 和密钥:

                                        VVVVVV
byte[] ivArr = Convert.FromBase64String(keyStr);
byte[] keyArr = Convert.FromBase64String(ivStr);
                                         ^^^^^^

使用以下 link:添加 iOS 文件并实现头文件中提供的相同内容,并要求您的 .Net 开发人员进行相同的工作。

https://github.com/Pakhee/Cross-platform-AES-encryption