Есть ли возможность ускорить код данный код
Нужно ускорить код который дешифрует шифр gronsfeld с помощью подбора ключей и сравнивания дешифровок с словарем. На данный момент перебирает 10 миллионов ключей за 34 секунды, нужно чтобы перебирал 9-значные числа как можно быстрее. + Если кто разбрается можно ли здесь использовать @njit(fastmath=true) я пробовал писать у меня ошибка.
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 decrypt(message, key):
return algo(message, key, -1)
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 encrypt(message, key):
return algo(message, key, 1)
word_toDecode = 'Ogbcntkei'.upper()
f = open('words.txt')
dictionary = f.readlines()
dictionary = set(word.strip().lower() for word in dictionary)
a = []
def brute():
for x in prange(999999999):
s = decrypt(word_toDecode, str(x))
if s.lower() in dictionary:
a.append(x)
print(s + ' Key - ' + str(x))
def start():
cur_time = time.time()
brute()
end_time = time.time()
print(end_time - cur_time)
f.close()
start()