我有一个已知最大值的计数器(称为max
)。max
可以很大(实际上它会是36^40 - 1
or 62^40 - 1
)。
我想要一个具有以下属性的b
从[0..max]
到双射:不容易从.[0..max]
b(n+1)
b(n)
我不是在寻找加密安全的功能,我只是想要尽可能多的熵来混淆一点计数器的输出。
该函数必须在 PHP 中是可行的。这允许 PHP 的所有功能。
我有一个已知最大值的计数器(称为max
)。max
可以很大(实际上它会是36^40 - 1
or 62^40 - 1
)。
我想要一个具有以下属性的b
从[0..max]
到双射:不容易从.[0..max]
b(n+1)
b(n)
我不是在寻找加密安全的功能,我只是想要尽可能多的熵来混淆一点计数器的输出。
该函数必须在 PHP 中是可行的。这允许 PHP 的所有功能。
我认为这个问题不能以目前的形式回答。标准
b(n+1)
不容易从b(n)
没有很好的定义。您没有给出任何度量或可量化的约束。由于您继续写道您“不是在搜索加密安全函数”并在评论中提到您“并不真正关心任何人找到该函数”,因此不清楚为什么您需要双射。
但是,这里有一些想法可以帮助您找到满意的双射或澄清您的问题,以便其他人可以提供帮助。
任何线性多项式可逆模max
都可以工作。也就是说,形式的多项式
b(n) = a*n + b mod max
给出双射当且仅当
gcd(a,max) = 1
最简单的情况是a=1
和b=0
,所以b(n) = n
,这似乎满足了您模糊的约束。
如果你想对它感兴趣,你可以改变a
并且b
经常说生成一个随机数(但一定要检查它,gcd(a,max) = 1
否则你不会得到双射)。