Я створив простий випадковий генератор, який циклічно перетворює два числа хаотично, використовуючи метод множення та модуля. Це чудово працює для цього.
Якби я використовував його як генератор шифрів, він, однак, був би вразливий до відомої атаки в прямому тексті, враховуючи, що зловмисник може обернути інженеру насіння з ряду випадкових чисел в обчислювально ефективній формі.
Для підтвердження розбиття шифру знайдіть законну пару насіннєвих значень, які генерують 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 днів не дозволено використання спойлерів , відповідь має містити лише набір цифр, і, звичайно, це має бути інший набір, ніж розміщений попередніми вирішувачами. Після цього вам пропонується розмістити код і пояснити свій підхід.
Редагувати, карантин закінчений:
відповіді повинні містити як унікальний набір номерів, так і пояснення та код для документування способу вирішення.
Виграє найелегантніше рішення.
Для запису:
Написання програми, яка швидко знайде рішення, є елегантною.
Зробити програму, яка ефективно використовує функції графічного процесора, щоб зробити це ще швидше, є елегантним.
Робити роботу над фрагментом «музейного посуду» - це елегантно.
Пошук способу рішення, який можливо використати лише ручкою та папером, дуже елегантний.
Пояснити своє рішення в повчальному та легко зрозумілому вигляді - це елегантно.
Використання декількох або дуже дорогих комп’ютерів не є елегантним.