Привет! Необходимо вычислить алгоритм шифрования пароля. Известен сам пароль, ключ шифрования и результат. Пароль: 00 00 00 00 00 00 00 00 Вот несколько примеров: Ключ = A3 41 88 1C C3 13 7E 4E Результат = 11 82 3A 66 59 7C CA 48 Ключ = C4 64 E0 68 C6 54 F6 40 Результат = 64 B8 88 E0 D6 3A 00 70 Ключ = 93 C9 B2 33 43 55 4A DB Результат = 8E 87 09 0C 7F E4 5E 49 Ключ = 61 87 38 D5 31 13 6C 2B Результат = 6C 23 2B 10 11 34 90 AB Спасибо за внимание
deadbeef Миссия невыполнима без анализа программы , использующей сие шифрование. P.S. Советую почитать книжки по азам криптографии.
Можно только гадать, гадать и гадать. Ведь это шифрование необратимое (по результату нельзя узнать исходный пароль). Попробуй ключи, отличающиеся на 1 символ или пароли типа "PafgPafg" - возможно ты заметишь какую-то закономерность, присущую для того или иного крипта. Желательно пароли узнать.
Ну я просто надеялся что это может какой-то стандартный алгоритм Тип DES или еще что-нить. Вроде нашел место в программе где происходит магия. В понедельник будем посмотреть
Вопрос снят. Алгоритм раскушен Code (Text): inline unsigned char HexTetraToByte(const unsigned char HexTetra) { if ((HexTetra >= '0') && (HexTetra <= '9')) return HexTetra - '0'; else if((HexTetra >= 'A') && (HexTetra <= 'F')) return 10 + HexTetra - 'A'; else return 10 + HexTetra - 'a'; }; //--------------------------------------------------------------------------- static const char* HEX = "0123456789ABCDEF"; void Encrypt(char* EncryptedPassword, // 17 байт const char* Key, // 16 байт const char* Password) // 8 байт { unsigned char Buf[8]; const char* pch = Key; unsigned char tmp; for (unsigned i = 0; i < sizeof(Buf); i++) { Buf[i] = HexTetraToByte(*pch++) << 4; Buf[i] += HexTetraToByte(*pch++); Buf[i] ^= (unsigned char) Password[i]; } tmp = Buf[sizeof(Buf) - 1]; for (unsigned i = 0; i < sizeof(Buf); i++) { tmp += Buf[i]; Buf[i] = tmp; EncryptedPassword[i * 2] = HEX[tmp >> 4]; EncryptedPassword[i * 2 + 1] = HEX[tmp & 0x0F]; } EncryptedPassword[sizeof(Buf) * 2] = 0; };