- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在编写一个抽奖程序,其中人们有一些票,这些票由 1 到 100 之间的自然数标记。
我用mt_rand(1,100)
生成中奖号码,然后输出到网站上,让大家看到。
现在我做了一些研究,并从 Merseene wiki 文章中发现:
观察足够数量的迭代(在 MT19937 的情况下为 624,因为这是生成 future 迭代的状态向量的大小)允许预测所有 future 迭代。
mt_rand() MT19937使用的是当前版本吗?
如果是这样,我可以做些什么来使我生成的数字在密码学上更加安全?
提前致谢:-)
最佳答案
If so, what can I do to make my generated numbers more cryptographically secure?
您可以简单地使用适合此任务的随机数生成器而不是mt_rand()
。
等PHP 7出来了,就可以用random_int()
了当您的项目需要加密安全随机数生成器时。
好吧,你很幸运,你有两个不错的选择。
使用RandomLib .或者
我一直致力于将 PHP 7 的 CSPRNG 函数向后移植到 PHP 5 项目中。它位于 paragonie/random_compat 下的 Github 上。 .
在涉及密码学时,滚动自己的实现通常是一个糟糕的决定。 “不是这里发明的”通常是一件好事。但是,如果您执意要将自己的 PHP 库写入 securely generate random integers or strings , 有几点需要注意:
/dev/urandom
读取应该是你的首选,其次是mcrypt_create_iv()
和MCRYPT_DEV_URANDOM
,然后是从CAPICOM读取
(仅限 Windows),最后是 openssl_random_pseudo_bytes()
。/dev/urandom
读取时,缓存您的文件描述符以减少每次函数调用的开销。/dev/urandom
读取时,PHP 将始终缓冲 8192 字节的数据(您可能不会使用)。请务必关闭读取缓冲(即 stream_set_read_buffer($fileHandle, 0);
)。log()
)或任何涉及 float 的东西。mt_rand()
;相反,抛出未捕获的异常或发出 fatal error 。立即引起开发人员的注意。关于php - 使 mt_rand() 尽可能安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31365318/
我一直在使用 mt_rand(1,6),根据生成的随机整数,将使用不同的 CSS 样式(用于 MVT)。 就 PHP 函数而言,Analytics 会说唯一访问者(总共约 5K)存在巨大差异(在某些情
PHP 随机数是可预测的吗?如果是这样,预测 1 到 32 范围内的随机数有多难?有什么方法可以让它不可预测吗? 最佳答案 关于编程中随机函数的讨论由来已久。 看看这个:http://en.wiki
这个函数总是有问题,我的 mt_rand() 给我相同的数字: $hex = 'f12a218a7dd76fb5924f5deb1ef75a889eba4724e55e6568cf30be634706
偏见的定义是什么: The distribution of mt_rand() return values is biased towards even numbers on 64-bit build
我知道 PHP 的 mt_rand() 不应该用于安全目的,因为它的结果在加密方面不强。然而,许多 PHP 代码就是这样做的,或者在没有更好的随机性来源时将其用作后备。 那么情况有多糟糕呢? mt_r
我看到了那些文章: http://phpsecurity.readthedocs.org/en/latest/Insufficient-Entropy-For-Random-Values.html h
我正在编写一个抽奖程序,其中人们有一些票,这些票由 1 到 100 之间的自然数标记。 我用mt_rand(1,100)生成中奖号码,然后输出到网站上,让大家看到。 现在我做了一些研究,并从 Mers
mt_rand() 函数中传递的值是否有最大范围?它是否有最大“最高”数量? 上述限制是否取决于平台? mt_rand() 的速度是否取决于传入的范围? 换句话说,mt_rand(0,10000000
我在我的网站上用类似的东西做了两个基本的 A-B-C 测试 if(mt_rand(0,2) == 0){ //THROW IN RE HERE }elseif(mt_rand(0,2) == 1){
以下语句未返回任何结果。我检查了 SQL 语句,它们是正确的,而且似乎没有编码错误。 MaxResult = $row['resultid']; $row = db_fetch_item("S
MYSQL 有类似 mt_rand 的函数吗?我到处都找过了,但似乎找不到。 最佳答案 DELIMITER $$ CREATE FUNCTION `my_rand`(`arg_min` INT, `a
实际上,在我的 php 应用程序中,我想为每个用户分配一个唯一的数字代码。为此,我正在使用 mt_rand(0,100000000)。我希望它为数百万不同的用户生成数百万个数字而不重复并将其保存到数据
我有一个大量使用 mt_rand 和 mt_srand 的应用程序,问题是许多主机提供商默认启用 suhosin.mt_srand.ignore,这导致我的应用程序无法正常工作,因为播种没有工作...
这个问题在这里已经有了答案: What's the disadvantage of mt_rand? (2 个答案) 关闭 8 年前。 昨天无意中听到一段关于rand()和mt_rand()的对话,
使用 mt_rand($min, $max) 和 rand($min, $max) 关于速度有什么区别? 最佳答案 更新 从 PHP 7.1 开始,mt_rand 完全取代了 rand,rand 成为
来自 http://php.net/manual/en/function.mt-rand.php : Caution This function does not generate cryptogra
这两种生成顺序但有点独特的数字的方法之间的主要区别是什么?我想使用这样的数字作为 MySQL 数据库中的唯一用户 ID,以及作为密码的盐。 我的理解是,出于集群和索引的原因,这些 ID 应该是连续的(
我只是想知道,如果您抽取 5 位数字,mt_rand() 数字有多独特?在这个例子中,我试图用这个函数得到一个包含 500 个随机数的列表,其中一些是重复的。 http://www.php.net/m
我正在尝试生成河豚哈希,我想知道依赖 mt_rand() 为我生成盐是否足够安全? function blowfish($string, $salt = NULL, $iterations = '08
我会用 PhpUnit 创建一些测试。但是我想测试的 php 文件使用了 mt_rand() 函数。那么我怎样才能创建一个知道 mt_rand() 上次返回值的测试呢?感谢您回答我的问题,抱歉我的英语
我是一名优秀的程序员,十分优秀!