Добрый день! Данный алгоритм представлен следующей схемой: На вход подается 128 байтное число, для расшифровки используются 2 числа одно 128 байт, другое 4 байта = 0x00010001,при этом проверяется чтобы входящее число было меньше 128 байтового числа используемого для расшифровки. Все операции проводятся с большими числами. Определение входных параметров : Crypt - 128 байт шифра Key1 - 128 байт Key2 - 4 байта = 0x00010001 Шаг 1: Определяется количество циклов Count, и преобразуется Key2 по схеме Key2=0x00010001 Count=0; while ((Key2>>30) & 3 ==0) { Count=Count+2; Key2=Key2<<2; } Шаг 2: One=1 /* Большое число */ for(i=0;i<Count;i=i+2) { Tmp=BigMul(One,One) /* Результат произведение One*One */ One=BigMod(Tmp,Key1) /* Результат остаток от деления Tmp на Key1 */ Tmp=BigMul(One,One) One=BigMod(Tmp,Key1) if (Key2>>30)&3!=0 { Tmp=BigMul(Crypt,One) One=BigMod(Tmp,Key1) } Key2=Key2<<2; } Результат расшифровки в переменной One Вопрос: Как зашифровать изменненое значение One обратно в 128 байтную последовательность?
Протестируйте архив на предмет RSA, что бы быть окончательно уверенным что это данный алгоритм. Там есть файл закодированный файл crypt при правильном алгоритме должен получиться раскодированный файл decrypt. Также файл Key1 это наверно PQ,Key2 - E? Пробывал раскодировать сам, но что то не сходится результат.
Все разобрался это RSA. Большое спасибо Ruptoru! Проверил с помощью других компонентов раскодирует правильно! Теперь нужна помощь в восстановлении ключа шифрации!