PHP快速随机字符串功能

我需要快速的方法在 PHP中生成随机字符串a-Z0-9.我一直在做一些思考和测试,这是我到目前为止所做的: function randStr($length) { $result = null; $replace = array(/, +, =); while(!isset($result[$length-1])) { $result.=

我需要快速的方法在
PHP中生成随机字符串a-Z0-9.我一直在做一些思考和测试,这是我到目前为止所做的:

function randStr($length) {
    $result = null;
    $replace = array('/','+','=');
        while(!isset($result[$length-1])) {
        $result.= str_replace($replace,NULL,base64_encode(mcrypt_create_iv($length,MCRYPT_RAND)));
        }
    return substr($result,$length);
}

与为每个char迭代并选择随机ASCII值的函数相比,函数似乎工作得很快,但我关注的是我的实现的“质量”.我对密码学知之甚少,所以我想问一下这种函数是否会产生“好的”随机值.

> mcrypt_create_iv似乎返回某种随机二进制值,实际上用于使用mcrypt库加密/解密数据.什么是base64_encode对这种二进制数据的影响,当我base64_encode时,我实际上是否减少了熵?
> mcrypt_create_iv的第二个参数如何影响我的结果? php.net手册指出MCRYPT_RAND是’系统随机数生成器’.它是特定于操作系统的,如果是,那么创建了多少好的值?

> base64_encoding不会降低熵,它只是相同数据的不同表示. >它是特定于操作系统的,但我认为使用此功能创建的随机值足够好.在PHP 5.3下,您必须事先为生成器播种,如果您在不同的服务器上使用此代码,则可能会出现问题.

作者: dawei

【声明】:永州站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐

联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部