1

既知の最大値 ( と呼ばれる) を持つカウンターがありmaxます。max大きくなる可能性があります(実際にはまたはのいずれかになります36^40 - 162^40 - 1

次のプロパティを持つbから[0..max]への全単射が必要です:から容易に推測できません。[0..max]b(n+1)b(n)

暗号的に安全な関数を探しているわけではありません。カウンターの出力を少し難読化するために、できるだけ多くのエントロピーが必要です。

関数は PHP で実行可能でなければなりません。これにより、PHP が実行するすべての機能が許可されます。

4

1 に答える 1

3

この質問は、現在の形では答えられないと思います。基準

b(n+1)から容易に推測できないb(n)

は明確に定義されていません。メトリックまたは定量化可能な制約を指定していません。「暗号的に安全な関数を探していない」と書き続け、コメントで「誰かが関数を見つけることを本当に気にしない」と述べているため、なぜ全単射が必要なのかは不明です。

ただし、満足のいく全単射を見つけたり、他の人が助けられるように質問を明確にしたりするのに役立つアイデアをいくつか紹介します。

任意の線形多項式可逆モジュロmaxが機能します。つまり、次の形式の多項式

b(n) = a*n + b mod max 

次の場合に限り全単射を与える

gcd(a,max) = 1 

最も簡単なケースはa=1andb=0であり、b(n) = nあいまいな制約を満たしているように見えます。

あなたがそれに夢中になりたいなら、あなたは変更することができab多くの場合、乱数を生成すると言います(ただし、必ず確認してください。そうしgcd(a,max) = 1ないと、全単射が得られません)。

于 2012-01-18T16:50:37.393 に答える