乗算およびモジュラス法を使用して、2つの数値をカオス的に循環させる単純なランダムジェネレーターを設計しました。そのためにうまく機能します。
しかし、暗号ジェネレータとして使用する場合、攻撃者が一連の乱数からシードをリバースエンジニアリングできるため、既知のプレーンテキスト攻撃に対して脆弱です。
暗号が壊れていることを証明するために、可能な限り少ない電力、CPU時間などを使用して、[0; 255]の範囲で連続して7つのゼロを生成するシード値の正当なペアを見つけます。
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日間、ネタバレ禁止ません。回答には数字のセットのみを含める必要があり、もちろん、以前のソルバーが投稿したものとは異なるセットにする必要があります。その後、コードを投稿してアプローチを説明することをお勧めします。
編集、隔離が終了しました:
回答には、解決方法を文書化するための一意の数値セットと説明とコードの両方を含める必要があります。
最もエレガントなソリューションが勝ちます。
記録のために:
ソリューションをすばやく見つけることができるプログラムを書くことはエレガントです。
GPUの機能を効率的に利用してさらに高速に実行するプログラムを作成するのはエレガントです。
「ミュージアムウェア」で仕事をするのはエレガントです。
ペンと紙だけを使用して実行可能な解決方法を見つけることは非常にエレガントです。
有益でわかりやすい方法でソリューションを説明するのはエレガントです。
複数の、または非常に高価なコンピューターを使用するのは洗練されていません。