2015-06-18 3 views
3

Я использовал CocoaSecurity и RNCryptor для шифрования NSString в приложении iOs, а на стороне сервера (.NET) попытался расшифровать его, используя одну из многих функций, найденных в Интернете, но не повезло , Кроме того, AES расшифровывает онлайн-инструменты, не удается расшифровать.AES encryption/decryption iOs и .Net

Может ли кто-нибудь предоставить рабочий пример шифрования NSString на iOS и расшифровать его в .NET (VB или C#) с помощью AES256?

ответ

1

Если вы используете RNCryptor на iOS для использования .net RNCryptor-cs. RNCryptor - это больше, чем просто шифрование/дешифрование, это полный защищенный протокол, см. RNCryptor-Spec для получения более подробной информации о протоколе RNCryptor. RNEncryptor активно поддерживается.

CocoaSecurity Это не страшно, но я бы не использовал его, он использует SHA для извлечения ключа шифрования из пароля, и это не очень хорошо, в настоящее время практика заключается в использовании функции деривации ключа, такой как PBKDF2, которая много более безопасный. Вам нужно будет соответствовать протоколу .NET, и это не детализировано, вам нужно будет прочитать код, чтобы понять это. Он не обновлялся через год или более.

2

Спасибо зафу. Ваш ответ мне очень помогает.

Как было предложено, используя RNCryptor на iOS и RNCryptor-cs .Net Я могу зашифровать данные из iOS, а затем расшифровать их на .Net.

Вот небольшой пример, как я добиваюсь, что:

КСНА сторона:

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 
+0

Старается код выше Бесполезного 't дать ту же строку с pod' RNCryptor-objc ', я не понимаю смысла этого? – mgyky

Смежные вопросы