首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找在Math.random LCG中使用的种子,给出了输出列表

查找在Math.random LCG中使用的种子,给出了输出列表
EN

Security用户
提问于 2019-07-18 06:32:15
回答 1查看 552关注 0票数 0

给定一个或两个由Internet的线性同余生成器生成的连续Math.random输出,是否有可能找到在LCG中使用的种子并找到后续的输出?下面是在回购:上给出的代码

代码语言:javascript
复制
const double kdbl2to27 = 134217728.0;
uint64 sn;
sn = (seed * 25214903917 + 11) & 0x0000FFFFFFFFFFFFull; 
double res = double((uint)(sn >> 21)); 

seed = (sn * 25214903917 + 11) & 0x0000FFFFFFFFFFFFull;

res += (double)((uint)(seed >> 21)) / kdbl2to27;
res /= kdbl2to27;

然后,res作为Math.random值返回。我试着计算出倒转最后两行的数学,结果没有结果。我认为有一个直观的蛮力方法,我错过了利用的事实,我有两个输出。如果可以用一个输出来做,那也是很好的。

EN

回答 1

Security用户

发布于 2019-07-18 12:56:17

我可以建议尝试将所有已知的数据和公式通过类似于Microsoft、Z3或其他SMT解决程序。然而,我无法预测搜索需要多长时间。

票数 -1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/213675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档