[PHP]利用openssl_random_pseudo_bytes和base64_encode函数来生成随机字符串

openssl_random_pseudo_bytes函数本身是用来生成指定个数的随机字节,因此在使用它来生成随机字符串时,还需要配合使用函数base64_encode。如下所示:

public static function getRandomString($length = 42)
    {
        /*
         * Use OpenSSL (if available)
         */
        if (function_exists(‘openssl_random_pseudo_bytes‘)) {
            $bytes = openssl_random_pseudo_bytes($length * 2);

            if ($bytes === false)
                throw new RuntimeException(‘Unable to generate a random string‘);

            return substr(str_replace([‘/‘, ‘+‘, ‘=‘], ‘‘, base64_encode($bytes)), 0, $length);
        }

        $pool = ‘0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ‘;

        return substr(str_shuffle(str_repeat($pool, 5)), 0, $length);
    }

在调用base64_encode函数之后,还对结果进行了一次替换操作,目的是要去除随机生成的字符串中不需要的字符。

当然,在使用openssl_random_pseudo_bytes函数之前,最好使用function_exists来确保该函数在运行时是可用的。如果不可用,则使用Plan B:

substr(str_shuffle(str_repeat($pool, 5)), 0, $length);

这个函数的通用性很强,可以根据业务的需要进行适当修改然后当作静态方法进行调用。

时间: 2024-10-26 02:53:12

[PHP]利用openssl_random_pseudo_bytes和base64_encode函数来生成随机字符串的相关文章

生成随机字符串的几种常用方式

写在前面 今天在学习数据库的时候想随机生成一些数据来插入到数据表中,但是一时想不起来如何生成随机内容,就整理了之前学过的一些生成随机字符串的命令,以备不时之需,希望对各位有所帮助. 生成随机字符串的几种方式 1,利用系统变量RANDOM生成随机数 [[email protected] ~]# echo $RANDOM  生成随机数 [[email protected] ~]# echo $((RANDOM%100+1)) 生成1-100内的随机数(取余法) 2,利用openssl生成随机字符串,

.net生成随机字符串

生成随机字符串的工具类: /// <summary> /// 随机字符串工具类 /// </summary> public class RandomTools { /// <summary> /// 随机系数 /// </summary> public static int _RandIndex = 0; #region 获取某个区间的一个随机数 /// <summary> /// 获取某个区间的一个随机数 /// </summary>

PHP 生成随机字符串与唯一字符串

说明:生成随机字符串用到的方法有 mt_rand() 生成唯一字符串用到的方法有 md5(),uniqid(),microtime() 代码: 1 <?php 2 /* 3 * 生成随机字符串 4 * @param int $length 生成随机字符串的长度 5 * @param string $char 组成随机字符串的字符串 6 * @return string $string 生成的随机字符串 7 */ 8 function str_rand($length = 32, $char =

SQL生成随机字符串

1.SQLserve生成随机字符串 SELECT replace(newid(), '-', '')

C# 生成随机字符串

#region 生成随机字符串 /// <summary> /// 生成随机字符串 /// </summary> /// <param name="codeCount"></param> /// <param name="allChar"></param> /// <returns></returns> public static string CreateRandomC

python 生成随机字符串 和随机数字

生成随机字符串: ''.join(random.sample(string.ascii_letters + string.digits, 8)) //字符串中不会重复 for _ in range(8): s += random.choice(string.ascii_letters + string.digits) //字符串可以重复 生成随机浮点数 random.uniform(10, 20) 生成随机整数 random.randint(12, 20) 原文地址:https://www.cn

PHP生成随机字符串与唯一字符串

代码如下: <?php /* * 生成随机字符串 * @param int $length 生成随机字符串的长度 * @param string $char 组成随机字符串的字符串 * @return string $string 生成的随机字符串 */ function str_rand($length = 32, $char = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') { if(!is_int($le

利用纯JS和HTML Canvas生成随机迷宫过程中产生的有趣的事情

上效果图: #先看生成随机迷宫的代码吧↓ 1 <html> 2 <head> 3 <title>生成随机迷宫v1.0</title> 4 </head> 5 <body> 6 <center style="margin-top: 20px;"> 7 <canvas id="myCan1" title="作者:谢辉"></canvas> 8

Python生成随机字符串

利用Python生成随机域名等随机字符串. #!/usr/bin/env python# -*- coding: utf-8 -*- from random import randrange, choice from string import ascii_lowercase as lc from sys import maxsize from time import ctime tlds = ('com', 'edu', 'net', 'org', 'gov') for i in range(