PHP-注册表单上如何为用户自动生成高强度密码?

WP主题讨论 WP主题讨论 主题:1013 回复:2239

PHP-注册表单上如何为用户自动生成高强度密码?

浮生未歇 发布于 2016-12-29 字数 244 浏览 987 回复 2

由于业务的特殊性,目前有为用户生成高强度密码的需求,请问使用php如何来做?
场景有2个:
1. 用户点击生成密码,生成随机密码。
2. 用户输入关键字,点击生成密码,生成含有关键字的随机密码。

要求密码强度高,不易暴力破解。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(2

晚风撩人 2017-06-15 2 楼

想起了phpmyadmin里的添加用户时那个随机密码的生成程序了,帮你找出来,哈.

/**

  • Generate a new password, which may then be copied to the form
  • with suggestPasswordCopy().
  • @param string the form name
  • @return boolean always true
    /
    function suggestPassword() {
    // restrict the password to just letters and numbers to avoid problems:
    // "editors and viewers regard the password as multiple words and
    // things like double click no longer work"
    var pwchars = "abcdefhjmnpqrstuvwxyz23456789ABCDEFGHJKLMNPQRSTUVWYXZ";
    var passwordlength = 16; // do we want that to be dynamic? no, keep it simple :)
    var passwd = document.getElementById('generated_pw');
    passwd.value = '';
    for ( i = 0; i < passwordlength; i++ ) {
    passwd.value += pwchars.charAt( Math.floor( Math.random()
    pwchars.length ) )
    }
    return passwd.value;
    }
晚风撩人 2017-06-06 1 楼

<?php
function rand_string($len=16,$keyword='') {
if(strlen($keyword)>$len){//关键字不能比总长度长
return false;
}
$str ='';
$chars='ABCDEFGHIJKMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789';//去掉1跟字母l防混淆
if($len>strlen($chars) ) {//位数过长重复字符串一定次数
$chars= str_repeat($chars,ceil($len/strlen($chars)));
}
$chars = str_shuffle($chars);//打乱字符串
$str = substr($chars,0,$len);
if(!empty($keyword)){
$start=$len-strlen($keyword);
$str=substr_replace($str,$keyword,mt_rand(0,$start),strlen($keyword));//从随机位置插入关键字
}
return $str;
}
echo rand_string(16,'keyword');//output example:V8bNY6SmkeywordB
?>

想问一句,为什么一定要用php实现而不用js呢?