php - 创建双射以获得具有已知最大值的无序计数器

标签 php algorithm math cryptography entropy

我有一个已知最大值的计数器(称为max)。 max 可以很大(实际上它将是 36^40 - 162^40 - 1)。

我想要一个从 [0..max][0..max] 的双射 b 具有以下属性:b(n+1) 不容易从 b(n) 猜到。

不是在寻找加密安全函数,我只是想要尽可能多的熵来混淆计数器的输出。

该函数必须在 PHP 中可用。这允许 PHP 执行的所有功能。

最佳答案

我不认为这个问题在目前的形式下是可以回答的。判断标准

b(n+1) is not easily guessable from b(n)

没有明确定义。您没有给出任何度量或可量化的约束。由于您继续写道您“正在搜索加密安全功能”并在评论中提到您“并不真正关心任何人找到该功能”,因此不清楚您为什么需要双射。

但是,这里有一些想法可以帮助您找到您满意的双射或澄清您的问题以便其他人可以提供帮助。

任何线性多项式可逆模 max 都可以。即,形式为

的多项式
b(n) = a*n + b mod max 

给出双射当且仅当

gcd(a,max) = 1 

最简单的情况是a=1b=0,所以b(n) = n,这似乎满足你模糊的约束。

如果你喜欢它,你可以经常改变 ab,比如生成一个随机数(但一定要检查 gcd(a,max) = 1 否则你不会得到双射。

关于php - 创建双射以获得具有已知最大值的无序计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8913521/

相关文章:

php - woocommerce - 如何获取当前产品类别的最顶级类别

php - 通过jquery将数据库中的列填充到select2中

c++ - lower_bound() 返回最后一个元素

Java,在多线程环境下通过散列统一划分传入的工作

algorithm - 找到线段上等距点的最大数量

php - 如何使用 XMLHttpRequest 通过复制粘贴 javascript 接收 php 图像数据

php - 如何在php中重命名上传多个图像并插入数据库?

algorithm - 动态规划 : Why the need for optimal sub structure

algorithm - 通过特定顶点的有向图中最轻量级的圆

c++ - 由 n 个点定义的超平面