Я работал над программой для получения радужной таблицы , используя хеш crc32.
Основной цикл программы следующий:
from zlib import crc32
from string import ascii_lowercase
from itertools import product
...
rt = {}
i = 0
for p in product(ascii_lowercase, repeat = 8):
i += 1
print('\n%d' % i)
p = ''.join(p)
print('\nCurrent password = %s' % p)
r = bytes(p, 'utf-8')
h = hex(crc32(r))
for j in range(2**20):
h = list(h)
del h[0]
del h[0]
for k in range(0, len(h)):
if (h[k].isdigit()):
h[k] = chr(ord(h[k]) + 50)
h = ''.join(h)
r = bytes(h, 'utf-8')
h = hex(crc32(r))
h = list(h)
del h[0]
del h[0]
h = ''.join(h)
print('\nFinal hash = %s\n' % h)
rt[p] = h
if (i == 2**20):
break
Итак, код работает так, как я намереваюсь, и когда он выходит из цикла, он сохраняет сгенерированную радужную таблицу (переменную rt) в памяти.Что ж, при текущем количестве итераций, показанных в приведенном выше коде, для его выполнения потребуется несколько дней, и мне нужно создать эту таблицу, а также другие таблицы с различными итерациями через циклы, чтобы выполнить некоторые тесты наих.
Я подумал, что было бы неплохо попытаться распараллелить это, но после изучения документации по многопроцессорная обработка и изучения некоторых сообщений об этом, я все ещеневозможно распараллелить его правильно.
Заранее спасибо!