0x01AA Ответов: 1

Криптография в C#, C++, W32 api


Уважаемые эксперты
В образовательных целях я пытаюсь расшифровать зашифрованный текст. Этот текст шифруется .net с помощью PasswordDeriveBytes с RijndaelManaged. Зашифрованные средствами .net мы дали:
    парольная фраза
    saltValue
    hashAlgorithm (SHA в моем случае)
    passwordIterations
    initVector
    размер ключа

Моя цель: я пытаюсь расшифровать зашифрованный текст, используя только базовый W32 Api с использованием чистого c++ без какой-либо помощи хорошей поддержки MS/VS (расшифровка текста с помощью полной поддержки VS/.net проста и работает).

Теперь я сталкиваюсь с большими проблемами, особенно с "зверем ""PasswordDeriveBytes". Я понятия не имею, что он на самом деле делает, поэтому я пытаюсь решить эту часть шаг за шагом. После нескольких часов гугления мой план был/есть:
Я нашел
mono/PasswordDeriveBytes. cs at effa4c07ba850bedbe1ff54b2a5df281c058ebcb · mono/mono · GitHub[^]
по приведенной выше ссылке я надеялся найти исходный код для "PasswordDeriveBytes" в c#, который я могу более или менее легко перенести на c++.

Но я застрял с сообщением об ошибке в строке 243" public override byte[] GetBytes(int cb) " (в приведенной выше ссылке) с сообщением "хэш недопустим в указанном состоянии".

Наконец, моя надежда / вопрос в том, что у кого-то есть подобный опыт в этом и он может дать мне подсказку, в лучшем случае ссылку на c++ - "PasswordDeriveBytes" для чайников :)

Я должен упомянуть, что у меня нет никаких базовых знаний об этом криптографическом материале :(

Извините за кириллический вопрос и мой английский
Заранее спасибо.
С уважением

Что я уже пробовал:

Описанный выше.。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

1 Ответов

Рейтинг:
12

Richard Deeming

Этот пост в блоге[^] описывает, что делает класс. По сути, это реализация PBKDF1, которая может быть лучшим поисковым термином для поиска реализации C++.

Однако, документация[^] говорит, что он использует расширение PBKDF1. Не зная точно, что это за расширение, вы, вероятно, будете изо всех сил пытаться соответствовать выходным данным.

Если бы вы могли переключить .Чистый код для использования Rfc2898DeriveByes[^] вместо этого, это сделало бы вашу жизнь проще. Это прямая реализация PBKDF2, без каких-либо расширений.

Альтернативно, этот ответ StackOverflow[^] утверждает, что является рабочим переводом моно-кода для PasswordDeriveBytes, хотя и ограничиваются алгоритмом SHA1.


0x01AA

Большое вам спасибо за ваш ответ и 5 до сих пор.
Большинство ссылок, о которых вы упомянули, я узнаю. Но я думаю, что перечитывание его снова будет хорошим уроком для меня, чтобы решить мою просьбу.
Спасибо.