Расшифровать изображение с помощью алгоритма AES с паролем - PullRequest
1 голос
/ 19 июля 2011

Привет, ребята, кто-нибудь может сказать мне, как я могу расшифровать изображение с паролем, используя алгоритм AES. Изображение было зашифровано в iphone с некоторым паролем.Редактирование # 1 Дело в том, что пользователь выберет какое-то изображение из приложения iPhone, зашифрует его с помощью введенного пользователем пароля и отправит его на сервер.И теперь нам нужно загрузить изображение с сервера, расшифровать его с помощью того же пароля и показать изображение пользователю.И в iphone они дали пароль длиной 4, как «тест».Надеюсь, вы сможете лучше понять, что я пытаюсь сделать.

В iPhone у них есть по этой ссылке

Ответы [ 2 ]

1 голос
/ 19 июля 2011

Чтобы расшифровать изображение, вам нужно знать 2 вещи:

  1. Подробности процедуры генерации ключа. Обычно это делается с использованием вычисления хеша на основе предоставленного пароля. Иногда пароль может быть усилен с помощью так называемого сальто пароля . Если это так, вам нужно знать пароль соли. В основном:

    ключ = хэш (пароль + соль)

  2. Даже если вы знаете ключ, вы также должны знать режим шифрования (эти таинственные ECB / CBC и так далее). В основном режим работы означает, как зашифрованные блоки связаны друг с другом.

Без этих 2 параметров бесполезно расшифровывать - так что "Использовать источник Люк!"

1 голос
/ 19 июля 2011

Ну, во-первых, вам нужно знать ключ, который был получен из пароля. Они использовали PBKDF # 2? Сколько раундов? У AES нет «паролей», у него есть ключи.

Во-вторых, в каком режиме было зашифровано изображение? ЕЦБ? CBC? CTR? GCM

Если у вас есть byte[] данных, SecretKey ключа и byte[] IV, и вы использовали режим CBC, вы можете использовать следующее для расшифровки:

cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(iv)); 
ciphertext = cipher.doFinal(imageByte);

Поскольку здесь масса неизвестных, я не могу предложить точное решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...