返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php生成用户密码的两种方式
  • 464
分享到

php生成用户密码的两种方式

2024-04-02 19:04:59 464人浏览 独家记忆
摘要

目录一、md5密码 二、hash密码PS:PHP生成随机密码的几种方法方法一:方法二:方法三:方法四:在用户系统中,生成用户的密码是很重要的,而简单的密码必然给一些不法用户

在用户系统中,生成用户的密码是很重要的,而简单的密码必然给一些不法用户开了一些门户,这里列出几种常见的密码生成方式

一、md5密码 

这种应该算是最常见的密码加密方式了
md5是属于非对称加密中的一种,这种密码方式其实说安全也很安全,而因为哈希碰撞的存在,会导致可能会出现漏洞
最好是在加密的时候,加入混淆字符串,如下所示


<?php
//加密
function md5_password($passWord, $hash = 'autofelix_')
{
    return md5($hash . $password);
}
 
//验证
$userinfo = ;
 
if ($userinfo['password'] !== md5_password($password)) {
    
}
 

二、hash密码

这种加密方式主要使用单向散列算法创建密码的散列
PASSWORD_DEFAULT 使用 bcrypt 算法
PASSWORD_BCRYPT 使用 CRYPT_BLOWFISH 算法创建散列
PASSWORD_ARGoN2I 使用 Argon2 散列算法创建散列
这种密码加密方式数据库里储存结果的列可超过60个字符,所以varchar长度请设置255


<?php
//加密
function generatePassword($password)
{
   return password_hash($password, PASSWORD_DEFAULT);
}
 
//验证
function verifyPassword($password, $hashPassword)
{
   return password_verify($password, $hashPassword);
}
 
//加密结果:$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a

PS: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 ,可以根据需要调整范围,如ASCII码表中 97 - 122 位对应 a - z 的英文字母,具体可参考 ASCII码表; chr ( int $ascii )函数用于将对应整数 $ascii 转换成对应的字符。


function create_password($pw_length = 8){
 $randpwd = '';
 for ($i = 0; $i < $pw_length; $i++) {
  $randpwd .= chr(mt_rand(33, 126));
 }
 return $randpwd;
}

// 调用该函数,传递长度参数$pw_length = 6
echo create_password(6);

方法二:

1、预置一个的字符串 $chars ,包括 a - z,A - Z,0 - 9,以及一些特殊字符
2、在 $chars 字符串中随机取一个字符
3、重复第二步 n 次,可得长度为 n 的密码


function generate_password( $length = 8 ) {
 // 密码字符集,可任意添加你需要的字符
 $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_ []{}<>~`+=,.;:/?|';

 $password = '';
 for ( $i = 0; $i < $length; $i++ ) {
  // 这里提供两种字符获取方式
  // 第一种是使用 substr 截取$chars中的任意一位字符;
  // 第二种是取字符数组 $chars 的任意元素
  // $password .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
  $password .= $chars[ mt_rand(0, strlen($chars) - 1) ];
 }

 return $password;
}

方法三:

1、预置一个的字符数组 $chars ,包括 a - z,A - Z,0 - 9,以及一些特殊字符
2、通过array_rand()从数组 $chars 中随机选出 $length 个元素
3、根据已获取的键名数组 $keys,从数组 $chars 取出字符拼接字符串。该方法的缺点是相同的字符不会重复取。


function make_password( $length = 8 ) {
 // 密码字符集,可任意添加你需要的字符
 $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', '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', 
 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '!', 
 '@','#', '$', '%', '^', '&', '*', '(', ')', '-', '_', 
 '[', ']', '{', '}', '<', '>', '~', '`', '+', '=', ',', 
 '.', ';', ':', '/', '?', '|');

 // 在 $chars 中随机取 $length 个数组元素键名
 $keys = array_rand($chars, $length); 

 $password = '';
 for($i = 0; $i < $length; $i++) {
  // 将 $length 个数组元素连接成字符串
  $password .= $chars[$keys[$i]];
 }

 return $password;
}

方法四:

本方法是本文被蓝色理想转载后,一名网友提供的一个新方法,算法简单,代码简短,只是因为md5()函数的返回值的缘故,生成的密码只包括字母和数字,不过也算是一个不错的方法。算法思想:
1、time() 获取当前的 Unix 时间戳
2、将第一步获取的时间戳进行 md5() 加密
3、将第二步加密的结果,截取 n 位即得想要的密码


function get_password( $length = 8 ) {
 $str = substr(md5(time()), 0, $length);
 return $str;
}

到此这篇关于php生成用户密码的两种方式 的文章就介绍到这了,更多相关php生成用户密码内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: php生成用户密码的两种方式

本文链接: https://lsjlt.com/news/128662.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • php生成用户密码的两种方式
    目录一、md5密码 二、hash密码PS:php生成随机密码的几种方法方法一:方法二:方法三:方法四:在用户系统中,生成用户的密码是很重要的,而简单的密码必然给一些不法用户...
    99+
    2024-04-02
  • php接口加密的两种方式
    在我们做项目的时候免不了使用接口请求数据,或者通过接口给其他应用提供数据,但是在网络请求中我们的数据是可以别一些软件抓取到的,这样我们的数据就会别泄露或者被人篡改,在我们实际项目中应该怎么处理呢? 下...
    99+
    2023-09-24
    php 开发语言
  • Python生成随机验证码的两种方法
    使用python生成随机验证码的方法有很多种,今天小编给大家分享两种方法,大家可以灵活运用这两种方法,设计出适合自己的验证码方法。 方法一: 利用range方法,对于range方法不清楚的同学,请参考文章《...
    99+
    2022-06-04
    两种 验证码 方法
  • php开发商品批量生成sku组合(两种方式)
    近期在开发一个电商系统,做到了商品模块。虽然增删改查在所难免,但是商品这块更多的是js的调用等效果。还有更为重要的就是商品sku的批量生成与组合了。不同的系统有不同的需求,以下的需求就是要添加完各种规格后批量生成sku的。【推荐学习:PHP...
    99+
    2023-05-14
    sku组合 php
  • 3种生成高强度密码的方法
    在生活中,我们需要用到大量的密码,这些密码最好不要统一,否则万一泄漏的话,所有账号都暴露在风险之下。而在工作中,我们同样也需要用到大量密码,比如批量添加用户,批量设置服务器密码等。 ...
    99+
    2024-04-02
  • springboot验证码的生成与验证的两种方法
    目录前言效果一览(单击图片刷新验证码)一、使用整合kaptcha方式实现验证码生成与验证二、使用hutool-captcha方式实现验证码生成与验证前言 在springboot的登陆...
    99+
    2024-04-02
  • JAVA生成唯一订单编号方案(两种方式)
    方法一:使用UUID public static String getUUID() { String replaceUUID = UUID.randomUUID().toString().replace("-", ""); ...
    99+
    2023-09-12
    java 开发语言
  • Java生成Echarts表图的两种方案
    最近被生成报告纠结了一个礼拜,生成word并不难,可以通过模版来实现,目前用得比较多的技术有,poi,freemarker等等工具,只需要自己写一个模版通过占位符的形式来替换里面的变量。这里生成wor...
    99+
    2023-09-08
    java echarts 开发语言
  • 两款不错的Linux密码生成工具
    两款不错的Linux密码生成工具 先介绍最简单的方法,Linux自带的 $ strings /dev/urandom |tr -dc A-Za-z0-9 | head -c 20; echo whu...
    99+
    2019-01-05
    两款不错的Linux密码生成工具
  • Java生成二维码的几种实现方式
    前言 本文将基于Spring Boot介绍两种生成二维码的实现方式,一种是基于Google开发工具包,另一种是基于Hutool来实现; 下面我们将基于Spring Boot,并采用两种方式实现二维码的...
    99+
    2023-09-06
    java 开发语言
  • PHP 生成随机数的 5 种方式,你知道几种
    我知道五种PHP生成随机数的方式:1. 使用rand()函数:rand()函数可以生成一个指定范围内的随机整数。例如,生成1到10之...
    99+
    2023-09-21
    PHP
  • Android中EditText显示明文与密码的两种方式
    效果图如下所述: 布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xm...
    99+
    2022-06-06
    edittext Android
  • KEIL MDK生成bin文件的两种方法
    1. 使用Keil MDK的IDE界面生成bin文件:a. 打开Keil MDK的工程文件。b. 在工程文件中选择需要生成bin文件...
    99+
    2023-09-28
    KEIL
  • PHP操作redis的两种方式
    随着redis使用越来越广泛,各种应用系统几乎都会嵌入redis。当然,PHP也不例外。在我接触到的项目中,主要是使用redis作为缓存服务器。但是对于PHP来说,它本身并不支持redis。所以说这里我...
    99+
    2024-02-27
  • 聊聊Git中删除用户名和密码信息的方法(两种)
    在使用Git时,有时候我们需要删除已经保存的用户名和密码信息。这种情况通常出现在Git账号密码发生变化或者需要切换账号的情况下。本文将介绍如何删除Git中保存的用户名和密码信息。查看已保存的用户名和密码信息首先,我们需要查看当前Git所保存...
    99+
    2023-10-22
  • Pytorch实现将label变成onehot编码的两种方式
    目录前言使用scatter_获得one hot 编码使用tensor.index_select获得one hot编码第二种针对分割网络的one_hot编码总结由于Pytorch不像T...
    99+
    2023-02-01
    Pytorch label one hot编码 one hot编码 label one hot编码
  • Python编程生成随机用户名及密码的方法示例
    本文实例讲述了Python编程生成随机用户名及密码的方法。分享给大家供大家参考,具体如下: 方案一: import random global userName,userPassword #为了便于使用...
    99+
    2022-06-04
    示例 用户名 密码
  • 详解Spring集成Redis的两种方式
    目录一、使用Jedis方式集成1、增加依赖2、配置项3、配置连接池4、测试使用spring-data-redis1、引入依赖2、配置项3、使用4、可能会遇到的坑哨兵和集群总结:在工作...
    99+
    2024-04-02
  • java生成随机字符串的两种方法
    本文实例为大家分享了java生成随机字符串的具体代码,供大家参考,具体内容如下import java.util.Random;public class CharacterUtils {//方法1:length为产生的位数 public s...
    99+
    2023-05-31
    java 字符串 ava
  • Centos系统用户密码的字符串生成命令
    这篇文章主要介绍“Centos系统用户密码的字符串生成命令”,在日常操作中,相信很多人在Centos系统用户密码的字符串生成命令问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Centos系统用户密码的字符串生...
    99+
    2023-06-10
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作