PHP生成随机密码类分享

类代码:

<?php
/**
 * PHP - Password Generator Class
 * Version 1.0.0
 *
 */

if (@!is_object($passGen) || !isset($passGen)) {
  $passGen = new Password;
}

class Password
{

  /**
   * 大写字母 A-Z
   *
   * @var array
   */
  protected $uppercase_chars;

  /**
   * 小写字母 a-z
   *
   * @var array
   */
  protected $lowercase_chars;

  /**
   * 阿拉伯数字 0-9
   *
   * @var array
   */
  protected $number_chars;

  /**
   * 特殊字符
   *
   * @var array
   */
  protected $special_chars;

  /**
   * 其他特殊字符
   *
   * @var array
   */
  protected $extra_chars;

  /**
   * 最终用来生成密码的所有字符
   *
   * @var array
   */
  protected $chars = array();

  /**
   * 密码长度
   *
   * @var array
   */
  public $length;

  /**
   * 是否使用大写字母
   *
   * @var boolean
   */
  public $uppercase;

  /**
   * 是否使用小写字母
   *
   * @var boolean
   */
  public $lowercase;

  /**
   * 是否使用阿拉伯数字
   *
   * @var boolean
   */
  public $number;

  /**
   * 是否使用特殊字符
   *
   * @var boolean
   */
  public $special;

  /**
   * 是否使用额外的特殊字符
   *
   * @var boolean
   */
  public $extra;

  /**
   * 初始化密码设置
   *
   * @param int $length
   */
  function Password($length = 12)
  {
    $this->length = $length;

    $this->configure(true, true, true, false, false);
  }

  /**
   * 配置
   */
  function configure($uppercase = false, $lowercase = false, $number = false,
            $special = false, $extra = false
  ) {
    $this->chars = array();

    $this->upper_chars  = array(
                 "A", "B", "C", "D", "E", "F", "G", "H", "I",
                 "J", "K", "L", "M", "N", "O", "P", "Q", "R",
                 "S", "T", "U", "V", "W", "X", "Y", "Z"
                );
    $this->lower_chars  = array(
                 "a", "b", "c", "d", "e", "f", "g", "h", "i",
                 "j", "k", "l", "m", "n", "o", "p", "q", "r",
                 "s", "t", "u", "v", "w", "x", "y", "z"
                );
    $this->number_chars = array(
                 "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"
                );
    $this->special_chars = array(
                 "!", "@", "#", "$", "%", "^", "&", "*", "(", ")"
                );
    $this->extra_chars  = array(
                 "[", "]", "{", "}", "-", "_", "+", "=", "<",
                 ">", "?", "/", "`", "~", "|", ",", ".", ";", ":"
                );

    if (($this->uppercase = $uppercase) === true) {
      $this->chars = array_merge($this->chars, $this->upper_chars);
    }
    if (($this->lowercase = $lowercase) === true) {
      $this->chars = array_merge($this->chars, $this->lower_chars);
    }
    if (($this->number = $number) === true) {
      $this->chars = array_merge($this->chars, $this->number_chars);
    }
    if (($this->special = $special) === true) {
      $this->chars = array_merge($this->chars, $this->special_chars);
    }
    if (($this->extra = $extra) === true) {
      $this->chars = array_merge($this->chars, $this->extra_chars);
    }

    $this->chars = array_unique($this->chars);
  }

  /**
   * 从字符列中生成随机密码
   *
   * @return string
   **/
  function generate()
  {
    if (empty($this->chars)) {
      return false;
    }

    $hash    = '';
    $totalChars = count($this->chars) - 1;

    for ($i = 0; $i < $this->length; $i++) {
      $hash .= $this->chars[$this->random(0, $totalChars)];
    }

    return $hash;
  }

  /**
   * 生成随机数字
   *
   * @return int
   */
  function random($min = 0, $max = 0)
  {
    $max_random = 4294967295;

    $random = uniqid(microtime() . mt_rand(), true);
    $random = sha1(md5($random));

    $value = substr($random, 0, 8);
    $value = abs(hexdec($value));

    if ($max != 0) {
      $value = $min + ($max - $min + 1) * $value / ($max_random + 1);
    }

    return abs(intval($value));
  }
}

调用:

<?php

include_once 'password.class.php';

echo $passGen->generate();

//FS4yq74e2LeE
(0)

相关推荐

  • 纯php生成随机密码

    php生成一个随机的密码,方便快捷,可以随机生成安全可靠的密码. 分享代码如下 <?php header("Content-type:text/html;charset=utf-8"); function getRandPass($length = 6){ $password = ''; //将你想要的字符添加到下面字符串中,默认是数字0-9和26个英文字母 $chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJ

  • php中生成随机密码的自定义函数代码

    代码一: 生成一个随机密码的函数,生成的密码为小写字母与数字的随机字符串,长度可自定义.相对来说,这个比较简单 复制代码 代码如下: <?php/* * php自动生成新密码自定义函数(带实例演示)      适用环境: PHP5.2.x  / mysql 5.0.x* */function genPassword($min = 5, $max = 8)  {      $validchars="abcdefghijklmnopqrstuvwxyz123456789";     

  • PHP生成随机密码方法汇总

    使用PHP开发应用程序,尤其是网站程序,常常需要生成随机密码,如用户注册生成随机密码,用户重置密码也需要生成一个随机的密码.随机密码也就是一串固定长度的字符串,这里我收集整理了几种生成随机字符串的方法,以供大家参考. 方法一: 1.在 33 – 126 中生成一个随机整数,如 35, 2.将 35 转换成对应的ASCII码字符,如 35 对应 # 3.重复以上 1.2 步骤 n 次,连接成 n 位的密码 该算法主要用到了两个函数,mt_rand ( int $min , int $max )函数

  • PHP中快速生成随机密码的几种方式

    思路是这样的,密码通常是英文字母和数字的混合编排,我们可以借助随机函数rand函数随机的选择一个长字符串的一部分. function random_code($length = 8,$chars = null){ if(empty($chars)){ $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; } $count = strlen($chars) - 1; $code = ''; while(

  • PHP生成随机用户名和密码的实现代码

    有时候我们需要在应用程序中使用随机生成用户名和密码,这样可以大大提高应用程序的安全,在PHP中生成随机用户名和密码可以使用 mt_rand 函数或者是 rand 函数, rand 函数在验证码中的应用多一些,而生成长字符的随机码一般都需要 mt_rand 函数. 使用PHP生成随机数可以应用在许多地方,比如可以设计程序的随机密码.模拟掷骰子游戏的应用程序.石头剪子布游戏应用程序等等. 下面是PHP生成随机数的两个函数方法: 复制代码 代码如下: //自动为用户随机生成用户名(长度6-13)   

  • php生成随机密码自定义函数代码(简单快速)

    实现代码,复制即用: <?phpheader("Content-type:text/html;charset=utf-8");function getRandPass($length = 6){ $password = ''; //将你想要的字符添加到下面字符串中,默认是数字0-9和26个英文字母 $chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";  $char_

  • php生成随机密码的几种方法

    随机密码也就是一串固定长度的字符串,这里我收集整理了几种生成随机字符串的方法,以供大家参考. 方法一: 1.在 33 – 126 中生成一个随机整数,如 35,     2.将 35 转换成对应的ASCII码字符,如 35 对应 #     3.重复以上 1.2 步骤 n 次,连接成 n 位的密码 该算法主要用到了两个函数,mt_rand ( int $min , int $max )函数用于生成随机整数,其中 $min – $max 为 ASCII 码的范围,这里取 33 -126 ,可以根据

  • php实现随机生成易于记忆的密码

    本文实例讲述了php实现随机生成易于记忆的密码.分享给大家供大家参考.具体实现方法如下: 这里通过预定义一些单词,让php随机从这些单词中选择进行组合生成密码 function random_readable_pwd($length=10){ // the wordlist from which the password gets generated // (change them as you like) $words = 'dog,cat,sheep,sun,sky,red,ball,hap

  • php生成随机密码的三种方法小结

    使用PHP开发应用程序,尤其是网站程序,常常需要生成随机密码,如用户注册生成随机密码,用户重置密码也需要生成一个随机的密码.随机密码也就是一串固定长度的字符串,这里我收集整理了几种生成随机字符串的方法,以供大家参考. 方法一: 1.在 33 – 126 中生成一个随机整数,如 35, 2.将 35 转换成对应的ASCII码字符,如 35 对应 # 3.重复以上 1.2 步骤 n 次,连接成 n 位的密码 该算法主要用到了两个函数,mt_rand ( int $min , int $max )函数

  • PHP生成随机密码类分享

    类代码: <?php /** * PHP - Password Generator Class * Version 1.0.0 * */ if (@!is_object($passGen) || !isset($passGen)) { $passGen = new Password; } class Password { /** * 大写字母 A-Z * * @var array */ protected $uppercase_chars; /** * 小写字母 a-z * * @var arr

  • 支持png透明图片的php生成缩略图类分享

    注:此功能依赖GD2图形库 最近要用php生成缩略图,在网上找了一下,发现了这篇文章:PHP生成图片缩略图 试用了一下后,发现有这样几个问题: 1.png图片生成的缩略图是jpg格式的 2.png图片生成的缩略图没有了透明(半透明)效果(填充了黑色背景) 3.代码语法比较老 因此,在这个版本的基础上简单修改优化了一下. PHP生成缩略图类 <?php /* * desc: Resize Image(png, jpg, gif) * author: 十年后的卢哥哥 * date: 2014.11.

  • Shell创建用户并生成随机密码脚本分享

    创建随机数的方法: 复制代码 代码如下: 1~~~~ /dev/urandom 在Linux中有一个设备/dev/urandom是用来产生随机数序列的.利用该设备我们可以根据在需要生成随机字符串. 比如我们要产生一个8位的字母和数字混合的随机密码,可以这样: 复制代码 代码如下: [linux@test /tmp]$ cat /dev/urandom | head -1 | md5sum | head -c 8 6baf9282 2~~~~ 其实,linux已经提供有个系统环境变量了. 复制代码

  • 使用Python生成随机密码的示例分享

    生成随机密码这件事情用python来干确实相当的方便,优美的string方法加上choice简直是绝配 make_password.py ###简单几行代码执行即可生成记不住的字符串### $ python make_passwd.py DLrw9EiT Qs4Wm84q RQwl4L2L u9g0LgwW jHPtYdyU ... $ python make_passwd.py DLrw9EiT Qs4Wm84q RQwl4L2L u9g0LgwW jHPtYdyU ... 代码如下--注释比

  • 浅析ASP.NET生成随机密码函数

    实现ASP.NET生成随机密码功能是很容易的,下面的代码给出了完整的实现方法: 复制代码 代码如下: publicstaticstringMakePassword(stringpwdchars,intpwdlen) { stringtmpstr=""; intiRandNum; Randomrnd=newRandom(); for(inti=0; i{ iRandNum=rnd.Next(pwdchars.Length); tmpstr+=pwdchars[iRandNum]; } r

  • php生成shtml类用法实例

    本文实例讲述了php生成shtml类及其用法.分享给大家供大家参考.具体如下: 复制代码 代码如下: <?php  class Shtml{   var $DataSource;        //array 数组   var $Templet;           //string 字符串   var $FileName;      //绑定数据源   function BindData($arr){    $this->DataSource = $arr;   }      functio

  • python生成随机密码或随机字符串的方法

    本文实例讲述了python生成随机密码或随机字符串的方法.分享给大家供大家参考.具体实现方法如下: import string,random def makePassword(minlength=5,maxlength=25): length=random.randint(minlength,maxlength) letters=string.ascii_letters+string.digits # alphanumeric, upper and lowercase return ''.joi

  • 利用Python如何生成随机密码

    本位实例为大家分享了Python生成随机密码的实现过程,供大家参考,具体内容如下 写了个程序,主要是用来检测MySQL数据库的空密码和弱密码的, 在这里,定义了三类弱密码: 1. 连续数字,譬如123456,在get_weak_num中实现 2. 连续字母,譬如abcdef,在get_weak_character中实现 当然,个数都是随机的. 3. 数字和字母随机组合.在get_weak_num_character中实现. 同时定义了一个password_exist的列表,用于保存不同的密码.如

  • PowerShell生成随机密码的方法

    有的时候,小编需要一个随便密码.写asp的时候,用asp生成,写c#的时候用c#生成.PowerShell中可以使用c#,所以,可以把c#中生成随机密码方法套用给PowerShell. 小编以前看System.Web.Security命名空间的时候,发现下面有一个Membership类,下面有一个静态方法GeneratePassword(),使用它可以生成随机密码. 参考MSDN网址:http://msdn.microsoft.com/en-us/library/system.web.secur

  • php生成rss类用法实例

    本文实例讲述了php生成rss类用法,分享给大家供大家参考.具体如下: <?php require('rssbuilder.class.php'); header('Content-Type: application/xml; charset=UTF-8'); header('Cache-Control: no-cache, must-revalidate'); header('Expires: Fri, 14 Mar 1980 20:53:00 GMT'); header('Last-Modi

随机推荐