2013-08-20 141 views
-1

我偶然发现了一个桌面项目(特别是一个可执行程序),它不断地/重复地/连续地生成随机数据串。下面是它下面的预览:客户端密码生成器(Javascript)

enter image description here

不过,我想中的JavaScript代码。由于这个想法相当困惑,我不能简单地从零开始,并希望这里的任何人是否已经开发了类似的东西,或者有什么想法可以在JavaScript中这样做来给我一些信息或其他资源,也许jQuery插件管他呢。

预先感谢您!

+0

SO是不是真的帮助在开发过程的早期。但是,您可以通过['passgen'](https://github.com/defuse/passgen)(CLI)和['WinPassGen'](https://github.com/defuse/WinPassGen)在线查找源代码。 (GUI)以及[PHP端口](https://github.com/defuse/php-passgen)。 –

+0

PHP源代码不适合我。你可以在你的最后运行它吗? – Keeper

回答

1

这看起来并不难,除了Javascript的Math.random不是高质量的随机数字源。您可以参考最近发布的一些关于如何改进这一点的想法。

一旦你有了这些,将随机数字流转换成不同的格式应该是直截了当的,并且使用鼠标移动来增加熵也不难。

哪个部件让你感到特别困难?

更新

我贴在JSFiddle的部分版本。这只是显示该领域如何不断更新和冻结。但它对密码学没有任何作用。您仍然需要将鼠标移动转换为一组数字值,以用作更鲁棒的随机数生成器的输入。但将鼠标移动转换为数字非常简单。再次,请查看Web Cryptography API了解更多信息。

它使用这些代码片段:

var getRandomHexDigit = function() { 
    return (Math.floor(16 * Math.random())).toString(16).toUpperCase(); 
} 

setInterval(function() { 
    hex.value = hex.value.substring(1) + getRandomHexDigit(); 
}, 50); 
+0

特别是几代人的移动部分。它们从现场退出的效果以及已经生成的下一个字符串的“到达”。 – Keeper

+0

@JoshGreenary:我不知道我的更新是否对您的问题提供任何帮助。 (我不清楚你是什么意思,“这代人的移动部分”。)这是否至少启动你在正确的方向吗? –

+0

是的,它完全满足我的好奇心!感谢您的时间 :) – Keeper