php - 生成随机 5 个字符的字符串

标签 php random

我想创建精确的 5 个随机字符串,并且重复的可能性最小。最好的方法是什么?谢谢。

最佳答案

$rand = substr(md5(microtime()),rand(0,26),5);

这可能是我的最佳猜测——除非你也在寻找特殊字符:

$seed = str_split('abcdefghijklmnopqrstuvwxyz'
                 .'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
                 .'0123456789!@#$%^&*()'); // and any other characters
shuffle($seed); // probably optional since array_is randomized; this may be redundant
$rand = '';
foreach (array_rand($seed, 5) as $k) $rand .= $seed[$k];

Example

并且,对于基于时钟的一个(因为它是增量的,所以冲突更少):

function incrementalHash($len = 5){
  $charset = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  $base = strlen($charset);
  $result = '';

  $now = explode(' ', microtime())[1];
  while ($now >= $base){
    $i = $now % $base;
    $result = $charset[$i] . $result;
    $now /= $base;
  }
  return substr($result, -5);
}

注意:增量意味着更容易猜测;如果您将其用作盐或验证 token ,请不要。 “WCWyb”的盐(现在)意味着5秒后它是“WCWyg”)

关于php - 生成随机 5 个字符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5438760/

相关文章:

matlab - 在 Matlab 中生成加权随机 boolean 矩阵

javascript - 页面加载时的随机图像

php - 将 MySQL 查询的结果动态显示到 HTML 页面中

php - MySQL - 返回基于 2 个字段的值

javascript - JS 中的猜数字游戏

java - JDK 1.7 安全随机生成器播种和不可预测性

java - 具有 10 个不同随机元素且无重复的数组

php - RESTful API的客户端应用程序-理查森成熟度模型-正确的方法

php - wordpress中的文件写入问题

php - 在 MySQL 更新中使用 AND