В данный момент я пытаюсь взломать блочный шифр TEA на C. Это задание, а чайный шифр был ослаблен, так что ключ представляет собой 2 16-битных числа.
Нам дали код для кодирования открытого текста с использованием ключа, а также для декодирования зашифрованного текста с помощью ключа.
У меня есть несколько примеров открытого текста:
- открытый текст (1234,5678) закодированный (3e08, fbab)
- открытый текст (6789, dabc) закодированный (6617,72b5)
Обновлять
Метод encode принимает открытый текст и ключ encode(plaintext,key1). Это происходит снова с другим ключом для создания закодированного сообщения, encode(ciphertext1,key), который затем создает закодированное (3e08,fbab) или закодированное (6617,72b5).
Как мне взломать этот шифр?
На данный момент я кодирую известный открытый текст всеми возможными ключами; размер ключа представляет собой шестнадцатеричное значение ffffffff. Я записываю это в файл.
Но теперь я застрял и нуждаюсь в направлении.
Как я мог использовать слабость эквивалентных ключей TEA, чтобы сократить время, необходимое для взлома шифра? Кроме того, я собираюсь использовать человека в средней атаке.
Как и при кодировании известным открытым текстом и всеми ключами 1, он создаст весь зашифрованный текст со связанным ключом и сохранит его в таблице.
Затем я расшифрую известным зашифрованным текстом, который есть в моем задании, со всеми возможными значениями ключа2. Это оставит меня с таблицей расшифровок, которая была расшифрована только один раз.
Затем я могу сравнить две таблицы вместе, чтобы увидеть, соответствует ли какой-либо из encrpts с key1 расшифровке с key2.
Я также хотел бы использовать слабость equilenvent, если бы кто-нибудь мог помочь мне с реализацией этого в коде, это было бы здорово. Есть идеи?