Шифрование с открытым ключом RSA на iOS
Я пишу приложение iOS для связи с существующим сервером. Сервер генерирует пару ключей RSA (открытый ключ и закрытый ключ) и отправляет открытый ключ клиенту.
Клиент (приложение iOS) должен шифровать ТОЛЬКО открытый ключ и отправляет зашифрованные данные на сервер.
Итак, мне нужна функция Objective-C для шифрования RSA.
Ввод:
Процесс:
+ (NSString *)encryptString:(NSString *)str publicKey:(NSString *)pubKey;
Вывод:
uwGuSdCgDxAAN3M5THMrNcec3Fm/Kn+uUk7ty1s70oH0FNTAWz/7FMnEjWZYOtHe37G3D4DjqiWijyUCbRFaz43oVDUfkenj70NWm3tPZcpH8nsWYevc9a1M9GbnNF2jRlami8LLUTZiogypSVUuhcJvBZBOfea9cOonX6BG+vw=
Вопрос:
Как реализовать эту функцию?
+ (NSString *)encryptString:(NSString *)str publicKey:(NSString *)pubKey;
У меня есть digg в течение длительного времени, на SO и Google и в документе Apple. Я узнал, что Apple нужен файл .der для шифрования, а не только открытый ключ.
Ответы
Ответ 1
Я отвечу на мой вопрос:
1. создать SecKeyRef со строкой открытого ключа
Мне помогает этот пост: http://blog.flirble.org/2011/01/05/rsa-public-key-openssl-ios/#its-all-in-the-format
Это привело к моему коду: https://github.com/ideawu/Objective-C-RSA/blob/master/RSA.m#L34
2. использовать SecKeyRef для шифрования входных данных
Используйте Apple SecKeyEncrypt
(https://developer.apple.com/library/ios/documentation/Security/Reference/certifkeytrustservices/index.html)
3. полный код на github
https://github.com/ideawu/Objective-C-RSA
Ответ 2
код открытого ключа отображается в строке # L34, а не в строке # L69. код для 1. он должен быть https://github.com/ideawu/Objective-C-RSA/blob/master/RSA.m#L34