创建一个14个字符的“随机密钥生成器”

时间:2015-02-03 02:22:43

标签: php codeigniter lamp

我试图使用CodeIgniter为学校编写一个小程序,生成随机密钥'每次我点击“生成”#39;按钮。想看看我是否有办法创建一个函数,我可以用随机数或字母填充14个字符的数组,然后将数组设置为一个变量,我可以调用它作为我生成的键显示

任何和所有帮助都会非常感激,因为我是CodeIgniter的新手。

3 个答案:

答案 0 :(得分:3)

前段时间我在PHP中编写了这个函数,它完成了它的功能,并通过复杂性修饰符为您提供了一些灵活性,我使用了一组默认的5个不同“级别”的字符,长度也是可变的。

我只是想把它扔进这里,然后'试着'通过评论来解释发生了什么:

function rsg($length = 10, $complexity = 2) {
        //available 'complexity' subsets of characters
        $charSubSets = array(
            'abcdefghijklmnopqrstuvwxyz',
            'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
            '0123456789',
            '!@#$%^&*()_+{}|:">?<[]\\\';,.`~',
            'µñ©æáßðøäåé®þüúíóö'
        );

        // will be filled with subsets from above $charSubsets
        $chars = '';

        //concact each subset until complexity is reached onto the $chars variable
        for ($i = 0; $i < $complexity; $i++)
            $chars .= $charSubSets[$i];

        //create array containing a single char per entry from the combined subset in the $chars variable.
        $chars = str_split($chars);
        //define length of array for mt_rand limit
        $charCount = (count($chars) - 1);
        //create string to return
        $string = '';
        //idk why I used a while but it won't really hurt you when the string is less than 100000 chars long ;)
        $i = 0;
        while ($i < $length) {
            $randomNumber = mt_rand(0, $charCount); //generate number within array index range
            $string .= $chars[$randomNumber]; //get that character out of the array
            $i++; //increment counter
        }

        return $string; //return string created from random characters
    }

这是我目前使用的,它已经满足了我的需求已经很长一段时间了,如果有人读过这个有改进,我也很乐意听到它们!

答案 1 :(得分:1)

$a=array(rand(10000000000000, 99999999999999));

是一种快速获取14位数组的方法。

答案 2 :(得分:0)

这取决于你想要的随机性。您可以在$characters字符串中指定所需的所有字符,然后只需创建一个字符串$length,从字符串中选择长度为1的随机子字符串。

有什么要求? 你想让它尽可能随机(This link might be useful) 一个随机字符串中是否允许多次出现一个字符?

以下是一个例子:PHP random string generator