用于QWERTY键盘的php – 助记密码生成算法

前端之家收集整理的这篇文章主要介绍了用于QWERTY键盘的php – 助记密码生成算法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个“ mnemonic”密码生成功能,如下所示:
function Mnemonic($mnemonic)
{
    $result = null;
    $charset = array(str_split('aeIoU',1),str_split('bcdfghjklmnpqrstvwxyz',1));

    for ($i = 1; $i <= $mnemonic; $i++)
    {
        $result .= $charset[$i % 2][array_rand($charset[$i % 2])];
    }

    return $result;
}

基本上,这将生成一个$助记符长度的字符串,其中每个奇数字符都是辅音,每个偶数字符都是元音.虽然我明白这会降低密码的复杂度,但通常会更容易记住.现在我想通过生成易于键入的字符串来改进它.

例如,当一个* nix新手,我总是喜欢基于Debian的基于RHEL的发行版本,主要的原因是可以轻松地输入yum,而不是轻松地输入apt [-get],只需自己尝试一下.

如何实现逻辑生成易于在QWERTY键盘上键入的字符串?

你可能想看看 principles used in the Dvorak keyboard,

在密码生成算法中应用的原则是:

>应该用改变手写字母.
>使用简单的键入组合.看看Dvorak的布局,看看常见的有向图和信件的位置.
>仅使用底行的一个字母,否则.让它随机
>您可以将比例2比1(右手键入的2个字母由左手键入1个字母).
>由于比例是2比1,你将有两个连续的字母由同一只手打字,所以你必须确保他们是从键盘的外部键入到里面.这个原则被应用于有向图.

我知道你说这是一个QWERTY键盘,但在QWERTY键盘上使用这些原则可以给你一些非常好的结果,如:

ktrd,ogkdo (“typewriter” in dvorak)

kjg;g;akd;k (using only the home row)

pjedoildupsk (just a random password following the principles)

所有Dvorak仇恨,嘘!

我希望这有帮助.

猜你在找的PHP相关文章