Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中生成一次性6位密码?_Php_Security_Cryptography - Fatal编程技术网

如何在php中生成一次性6位密码?

如何在php中生成一次性6位密码?,php,security,cryptography,Php,Security,Cryptography,如何在PHP中为使用手机的双因素身份验证生成一次性密码尝试以下操作: <?php $pass= rand(100000, 999999); ?> 您可以使用md5或sha1之类的工具来执行此操作: print substr(md5("text"), 0, 6); 如果它必须是唯一的,您可能希望使用存储已生成密码的数据库进行检查,或者使用更长的密码,因为6位数字可以很快使用 你说数字,如果只有数字,你可以: print mt_rand(100000, 999999); 通

如何在PHP中为使用手机的双因素身份验证生成一次性密码尝试以下操作:

<?php    
$pass= rand(100000, 999999);
?>

您可以使用md5或sha1之类的工具来执行此操作:

print substr(md5("text"), 0, 6);
如果它必须是唯一的,您可能希望使用存储已生成密码的数据库进行检查,或者使用更长的密码,因为6位数字可以很快使用

你说数字,如果只有数字,你可以:

print mt_rand(100000, 999999);

通过使用生成一次性密码的算法。很乐意帮忙-1.因为缺少。。一切都好,没有理由否决投票。题目提出了一个合法的问题。本可以更好/更进一步的表述,但仍然很容易理解。@Chrules:如果你认为这是一个好问题,请阅读应该说服你的。这不是一个为我写代码的网站。@Clive不是一个好问题,假设OP没有编程经验,这也不是一个坏问题。我们可以很容易地指向以下方向:使用随机生成器或散列生成器。这将使OP自己进行搜索。但我们只想尽我们所能回答:不要使用兰德公司。使用。好,快,干净,容易。。。如果你只想要数字;op表示6位密码。所以,没有任何理由认为他需要更多。这段代码很难看,为什么不使用循环呢?键入所有这些数字方便吗?我发现许多字符会导致问题,我使用此函数的次数远不止一次密码,所以我硬编码了要使用的字符,您会注意到这里和那里缺少一些字符
print substr(md5("text"), 0, 6);
print mt_rand(100000, 999999);
<?php

function random($length = 6)
{      
    $chars = 'bcdfghjklmnprstvwxzaeiou0123456789';
    $result = '';

    for ($p = 0; $p < $length; $p++)
    {
        $result .= ($p%2) ? $chars[mt_rand(19, 23)] : $chars[mt_rand(0, 18)];
    }

    return $result;
}
echo random();
?>
<?php
function generatePassword($length, $strength) 
{
    $vowels = 'aeuy';
    $consonants = 'bdghjmnpqrstvz';
    if ($strength & 1) 
    {
        $consonants .= 'BDGHJLMNPQRSTVWXZ';
    }
    if ($strength & 2) 
    {
        $vowels .= "AEUY";
    }
    if ($strength & 4) 
    {
        $consonants .= '23456789';
    }
    if ($strength & 8) 
    {
        $consonants .= '@#$%';
    }
    $password = '';
    $alt = time() % 2;
    for ($i = 0; $i < $length; $i++) 
    {
        if ($alt == 1) 
        {
            $password .= $consonants[(rand() % strlen($consonants))];
            $alt = 0;
        } 
        else 
        {
            $password .= $vowels[(rand() % strlen($vowels))];
            $alt = 1;
        }
    }
    return $password;
}


    echo generatePassword(6,4);
?>