Можно ли добиться поиска в 32-битном ключевом пространстве?
OpenSSL с AES-NI может выполнять 61510120 итераций для 64-байтовых блоков AES-128 в режиме CBC за 3 секунды на моей машине.
бег скорость openssl -evp AES128
увидеть в вашей машине.
Это делает $2^{26}$ keyspace в течение трех секунд. нужно $2^{6} =64*3$ секунд, чтобы найти ключевых кандидатов с хорошим кодированием.
Для вашего дела создайте 3 функции;
- $P = \operatorname{AES-Dec-CBC}(k, IV, C)$ куда $С$ блоки зашифрованного текста и $P$ это расшифрованный открытый текст под текущим ключом $к$ из $С$.
- $k =\operatorname{GetNextCandidateKey(current)}$ Этот простой увеличивает текущий и создает ключ $k = текущий\mathbin\|1100\cdots011$ в бинарной форме. Вам нужно преобразовать это в двоичный файл, чтобы он соответствовал стандартным библиотекам шифрования.
- $b = \operatorname{CheckTheMessage}(P)$. Эта функция получает открытый текст и проверяет, находятся ли байты в диапазоне. Если не возвращается
0
иначе возвращается 1
Теперь с этими 3 функциями;
ток = -1
в то время как текущий < 2 ^ 32 сделать:
k = GetNextCandidateKey (текущий)
P = AES-Dec-CBC(k, IV, C)
b = ПроверитьСообщение(P)
если б == 1
печать (текущая)
текущий++