Php 生成不含这些字符的随机密码";L10O“;
我需要根据以下条件生成随机密码:Php 生成不含这些字符的随机密码";L10O“;,php,security,random,passwords,Php,Security,Random,Passwords,我需要根据以下条件生成随机密码: 除了“l10o”之外,所有字符都是允许的 长度为8到12个字符 我尝试过的代码: function generateRandomPassword() { //Initialize the random password $password = ''; //Initialize a random desired length $desired_length = rand(8, 12); for($length = 0; $length
- 除了“l10o”之外,所有字符都是允许的
- 长度为8到12个字符
function generateRandomPassword() {
//Initialize the random password
$password = '';
//Initialize a random desired length
$desired_length = rand(8, 12);
for($length = 0; $length < $desired_length; $length++) {
//Append a random ASCII character (including symbols)
$password .= chr(rand(32, 126));
}
return $password;
}
函数生成器域密码(){
//初始化随机密码
$password='';
//初始化所需的随机长度
$desired_length=兰特(8,12);
对于($length=0;$length<$desired_length;$length++){
//附加随机ASCII字符(包括符号)
$password.=chr(兰特(32226));
}
返回$password;
}
如何避免这4个字符=>“l10o”
原因:
- 用户有时会混淆这4个字符李>
function generateRandomPassword($length = 8) {
$characters = '23456789abcdefghjklmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomPassword = '';
for ($i = 0; $i < $length; $i++) {
$randomPassword .= $characters[rand(0, $charactersLength - 1)];
}
return $randomPassword;
}
function generateRandomPassword($length = 8) {
$randomPassword = '';
for ($i = 0; $i < $length; $i++) {
while (true) {
//remove 0,1,I,O,l,o
while(in_array(($number = rand(65, 122)), array(48, 49, 73, 79, 108, 111)));
if ($number <= 90 or $number >= 97) {
$randomPassword .= chr($number);
break ;
}
}
}
return $randomPassword;
}
echo generateRandomPassword();
函数生成器域密码($length=8){
$characters='23456789abcdefghjklmnpqrstuvxyzabcdefghjklmnpqrstuvxyz';
$charactersLength=strlen($characters);
$randomPassword='';
对于($i=0;$i<$length;$i++){
$randomPassword.=$characters[rand(0,$charactersLength-1)];
}
返回$randomPassword;
}
您不需要更改代码。只需使用str_replace替换这些单词,您可以尝试以下解决方案:)。刚刚编辑了你的代码
function generateRandomPassword($length = 8) {
$characters = '23456789abcdefghjklmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomPassword = '';
for ($i = 0; $i < $length; $i++) {
$randomPassword .= $characters[rand(0, $charactersLength - 1)];
}
return str_replace(['l','1','o','0'], ['A','B','C','D'], $randomPassword);
}
函数生成器域密码($length=8){
$characters='23456789abcdefghjklmnpqrstuvxyzabcdefghjklmnpqrstuvxyz';
$charactersLength=strlen($characters);
$randomPassword='';
对于($i=0;$i<$length;$i++){
$randomPassword.=$characters[rand(0,$charactersLength-1)];
}
返回str_replace(['l','1','o','0'],['A','B','C','D'],$randomPassword);
}
$string='abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyzo123456789';
$req\U pword\U len=20;
$char\u count=0;
$password='';
$chars=str_split($string);
而($char\u count<$req\u pword\u len){
$char=百万兰特(0,61);
$password.=(字符串)$chars[$char];
$char_count++;
}
更改的值
- $string仅为您希望允许的字符
- $req_pword_len到所需密码长度
请不要使用当前提供的用于生成密码的任何其他答案。无论如何,他们都不安全
rand()
->否
mt_rand()
->绝对不是
我将从一篇标题恰当的博客文章中得出这个解决方案
您可能没有,除非您将来在PHP7发布时阅读本文。对于我们这些生活在当下的人,请使用。试试以下方法:
function generateRandomPassword($length = 8) {
$characters = '23456789abcdefghjklmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomPassword = '';
for ($i = 0; $i < $length; $i++) {
$randomPassword .= $characters[rand(0, $charactersLength - 1)];
}
return $randomPassword;
}
function generateRandomPassword($length = 8) {
$randomPassword = '';
for ($i = 0; $i < $length; $i++) {
while (true) {
//remove 0,1,I,O,l,o
while(in_array(($number = rand(65, 122)), array(48, 49, 73, 79, 108, 111)));
if ($number <= 90 or $number >= 97) {
$randomPassword .= chr($number);
break ;
}
}
}
return $randomPassword;
}
echo generateRandomPassword();
函数生成器域密码($length=8){
$randomPassword='';
对于($i=0;$i<$length;$i++){
while(true){
//移除0,1,I,O,l,O
而(在_数组中($number=rand(65122)),数组(48,49,73,79,108,111));
如果($number=97){
$randomPassword.=chr($number);
打破
}
}
}
返回$randomPassword;
}
echo GeneratorDomainPassword();
仍然得到i
。。。我需要避免这4个字符l1o0
您可以自己删除它:P无论如何,已更新:)这不够安全,无法用于密码rand()
特别弱。这不仅不安全(永远不要使用rand()
生成密码),而且偏向于这4个字符。
function generateRandomPassword($length = 8) {
$randomPassword = '';
for ($i = 0; $i < $length; $i++) {
while (true) {
//remove 0,1,I,O,l,o
while(in_array(($number = rand(65, 122)), array(48, 49, 73, 79, 108, 111)));
if ($number <= 90 or $number >= 97) {
$randomPassword .= chr($number);
break ;
}
}
}
return $randomPassword;
}
echo generateRandomPassword();