Я разработал простой генератор случайных чисел, который циклически переключает два числа, используя метод умножения и модуля. Это прекрасно работает для этого.
Если бы я использовал его в качестве генератора шифров, он, однако, был бы уязвим для известной атаки открытым текстом, учитывая, что злоумышленник может произвести обратное проектирование начального числа из серии случайных чисел вычислительно эффективным способом.
Чтобы доказать, что шифр сломан, найдите правильную пару начальных значений, которые генерируют 7 нулей подряд в диапазоне [0; 255], используя как можно меньше энергии, времени ЦП и т. Д.
Вот генератор случайных чисел, написанный на JavaScript:
function seed(state1,state2){
//Constants
var mod1=4294967087
var mul1=65539
var mod2=4294965887
var mul2=65537
function random(limit){
//Cycle each state variable 1 step
state1=(state1*mul1)%mod1
state2=(state2*mul2)%mod2
//Return a random variable
return (state1+state2)%limit
}
//Return the random function
return random
}
//Initiate the random generator using 2 integer values,
//they must be in the ranges [1;4294967086] and [1;4294965886]
random=seed(31337,42)
//Write 7 random values in the range [0;255] to screen
for(a=0;a<7;a++){
document.write(random(256)+"<br>")
}
Я сделал инструмент для тестирования пар номеров кандидатов, его можно найти здесь .
В течение следующих 3 дней спойлеры запрещены , ответ должен содержать только набор чисел, и он, конечно, должен отличаться от тех, которые были опубликованы предыдущими решателями. После этого вам предлагается опубликовать код и объяснить свой подход.
Изменить, карантин окончен:
ответы должны содержать как уникальный набор чисел, так и пояснения и код для документирования метода решения.
Самое элегантное решение побеждает.
Для справки:
написание программы, которая может быстро найти решение, элегантно.
Создание программы, которая эффективно использует возможности графического процессора, чтобы сделать это еще быстрее, элегантно.
Делать работу над частью «музейной посуды» - это элегантно.
Найти метод решения, который можно реально использовать, используя только ручку и бумагу, очень элегантно.
Объяснять ваше решение поучительным и легко понятным способом - элегантно.
Использование нескольких или очень дорогих компьютеров не элегантно.