PHP快速随机字符串功能

前端之家收集整理的这篇文章主要介绍了PHP快速随机字符串功能前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要快速方法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下,您必须事先为生成器播种,如果您在不同的服务器上使用此代码,则可能会出现问题.

猜你在找的PHP相关文章