Форум сайта python.su
0
Есть код который дешифрует шифр подбором по формуле, используя цикл подставляется ключ и полученное слово проверяется на существование в словаре на 500 к слов.
Как можно ускорить проверку ? чтобы проверить все ключи уйдет очень много часов
import string import numpy as np import nuitka from numba import njit, prange import time string.digits + string.ascii_letters + string.punctuation + string.digits alph = string.ascii_uppercase # print(encrypt('ANCIENT', '420')) #шифрование # print(decrypt('NHUDMOVUHB', '13')) #расшифровывание def algo(text, k, op): k *= len(text) // len(k) + 1 return ''.join(alph[alph.index(j) + int(k[i]) * op] for i, j in enumerate(text)) def decrypt(message, key): return algo(message, key, -1) def encrypt(message, key): return algo(message, key, 1) word_toDecode = 'Epqv'.upper() f = open('words.txt') dictionary = f.readlines() dictionary = set(word.strip().lower() for word in dictionary) duplicate_words = [] def brute(): for x in prange(10000000): s = decrypt(word_toDecode, str(x)) if s.lower() in dictionary: for i in duplicate_words: if i == s.lower(): break else: duplicate_words.append(s.lower()) print(s + ' Key - ' + str(x)) def start(): cur_time = time.time() brute() end_time = time.time() print(end_time - cur_time) f.close() start()
Офлайн
857
xmsq13А что дано изначально? Алгоритм шифрования известен? Что известно о шифротексте?
Как можно ускорить проверку ? чтобы проверить все ключи уйдет очень много часов
Офлайн
0
py.user.nextАлгоритм шифрования - шифр Гронсфилда, о шифротексте неизвестно ничего, я подбирал ключи и полученные вариант сравнивал со словарем, типа существует ли слово которое я расшифровал. Есть ли алгоритм получше ?
Офлайн
857
xmsq13
Алгоритм шифрования - шифр Гронсфилда
xmsq13Для криптоанализа этого шифра нужен большой текст. Этот шифр представляет из себя смесь шифров наподобие шифра Цезаря и наподобие шифра Виженера. Поэтому просто частотный анализ не подойдёт. Шифр многоалфавитный и тд и тп.
Есть ли алгоритм получше ?
Офлайн