Известная атака открытого текста на поточный шифр на основе LFSR ⇐ Python
-
Anonymous
Известная атака открытого текста на поточный шифр на основе LFSR
У меня есть зашифрованный текст, зашифрованный с помощью потокового шифра, который использует LFSR в качестве генератора псевдослучайных битов. Первая часть открытого текста такова: «Бросьте нас в Азкабан; мы будем ждать! Он восстанет снова и придет за нами, он вознаградит нас больше, чем кто-либо из других своих сторонников! Мы одни были верны! Мы одни пытались найти его». !" Цель состоит в том, чтобы расшифровать остальную часть зашифрованного текста. Обратите внимание на представление байтов с прямым порядком байтов (с помощью используя один из этих двух, вы получите открытый текст)
def berlekamp_massey(последовательность): n = len(последовательность) с = [0] * п б = [0] * п б[0], с[0] = 1, 1 л, м, я = 0, -1, 0 для j в диапазоне (n): d = последовательность[j] ^ сумма(c[k] и последовательность[j - k] для k в диапазоне (1, i + 1)) если d != 0: т = c.copy() р = (j - m) % n для k в диапазоне (n): c[(k + p) % n] ^= b[k] если 2 * l
У меня есть зашифрованный текст, зашифрованный с помощью потокового шифра, который использует LFSR в качестве генератора псевдослучайных битов. Первая часть открытого текста такова: «Бросьте нас в Азкабан; мы будем ждать! Он восстанет снова и придет за нами, он вознаградит нас больше, чем кто-либо из других своих сторонников! Мы одни были верны! Мы одни пытались найти его». !" Цель состоит в том, чтобы расшифровать остальную часть зашифрованного текста. Обратите внимание на представление байтов с прямым порядком байтов (с помощью используя один из этих двух, вы получите открытый текст)
def berlekamp_massey(последовательность): n = len(последовательность) с = [0] * п б = [0] * п б[0], с[0] = 1, 1 л, м, я = 0, -1, 0 для j в диапазоне (n): d = последовательность[j] ^ сумма(c[k] и последовательность[j - k] для k в диапазоне (1, i + 1)) если d != 0: т = c.copy() р = (j - m) % n для k в диапазоне (n): c[(k + p) % n] ^= b[k] если 2 * l