На Python написать линейный конгруэнтный генератор,шифратор,дешифратор
Линейный конгруэнтный генератор
Линейный конгруэнтный генератор задается рекуррентной формулой:
gi = a⋅gi–1 + b (mod m), где gi – i-й член последовательности псевдослучайных чисел; a, b, m и g0 – ключевые параметры. Данная последовательность состоит из целых чисел от 0 до m – 1, и если элементы gi и gj совпадут, то последующие участки последовательности также совпадут: gi+1 = gj+1, gi+2 = gj+2, и т.д. Поэтому последовательность {gi} является периодической, и ее период не превышает m. Для того чтобы период последовательности псевдослучайных чисел, сгенерированной по указанной рекуррентной формуле, был максимальным (равным m), параметры данной формулы должны удовлетворять следующим условиям:
- b и m —взаимно простые числа;
- a – 1 делится на любой простой делитель числа m;
1. Реализовать ЛКГ в соответствии с вариантом, записанном в формате LCG(m, a, b, g0).
Вариант 3.
2. Ввести открытый текст, зашифровать и дешифровать его методом гаммирования, используя ЛКГ.