Расшифровка RSA/ECB/PKCS1Padding на iPhone

Я много искал в отношении моей задачи, которая похожа на

я получаю данные через XML, который зашифрован с использованием RSA/ECB/PKCS1Padding из серверной части, и они дали мне имя файла "publickey.der". По их словам, это открытый ключ, и вам нужно использовать этот ключ для расшифровки.

Серьезно, я понятия не имею об использовании этого открытого ключа для расшифровки на Objective C.

Пожалуйста, подскажите, какую структуру, библиотеку или SDK мне нужно использовать, или у кого-нибудь есть пример кода для этого. Я рассчитываю только на вас, ребята.

Ждем ваших ответов

Спасибо еще раз


person Muhammad Saad Ansari    schedule 22.03.2013    source источник
comment
Я не уверен, что вы подразумеваете под RSA/ECB/PKCS1Padding. ECB — это режим работы блочного шифра (например, AES), а не схемы с открытым ключом (например, RSA). В любом случае, возможно, стоит взглянуть на Библиотека CommonCrypto   -  person Nathan    schedule 22.03.2013
comment
@NathanBaggs "ECB" часто используется как синоним "None" в Java для RSA. По сути, вы можете зашифровать в режиме ECB, разделив открытый текст на блоки на 11 байт меньше размера ключа, а затем зашифровав каждый блок. Это идентично тому, как AES выполняется в режиме ECB. Конечно, это очень медленно, у вас много накладных расходов, но это можно сделать. В этом случае, хотя я предполагаю, что "RSA/ECB/PKCS1Padding" просто используется в качестве входных данных для API-интерфейса шифрования XML, который есть в Java.   -  person Maarten Bodewes    schedule 22.03.2013
comment
Не могли бы вы указать, какой формат контейнера используется для зашифрованных данных? Используется ли шифрование XML? Если вы не знаете, пожалуйста, опубликуйте некоторые зашифрованные тестовые данные.   -  person Maarten Bodewes    schedule 22.03.2013


Ответы (1)


Открытые ключи используются для шифрования, закрытые ключи — для расшифровки. Сначала вам придется исправить эту проблему.

Также RSA/ECB/PKCS1Padding не является распространенным явлением, когда вы хотите rsa зашифровать большой объем данных, обычно вы шифруете ключ aes с помощью rsa и вместо этого шифруете свои данные с помощью aes.

По сути, чтобы выполнить эту расшифровку RSA/ECB вне java, это будет вручную, и вам придется разбить ваш зашифрованный текст на размер вашего блока (размер ключа), а затем расшифровать каждый блок без заполнения, до окончательного блок с дополнением, вот как вы получаете ECB.

Это не идеально, поскольку в сочетании с тем, что они предоставляют вам открытый ключ и говорят вам расшифровать, предполагает, что тот, кто предоставляет вам данные, должен исправить свои проблемы с шифрованием.

person jbtule    schedule 22.03.2013