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

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

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

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

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

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

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

评论(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呢?