避免悲剧 JavaScript密码生成器

最近被暴库的很多,密码安全成为重大问题!如何避免简单密码呢?还在冥思苦想密码?No
首页 新闻资讯 行业资讯 避免悲剧 JavaScript密码生成器

我为大家准备了一个密码生成工具,有0-9和a-k的英文字母组成,数字是乱序排列。字母随机一个替换掉一个数字,生成一个长度为10的密码。

复制

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"           "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">    <html xmlns="http://www.w3.org/1999/xhtml">    <head>        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>        <title></title>    </head>    <body>    <div>         <input id="strat" type="button" value="开始" />    <textarea rows="10" cols="25" id="password"></textarea>    </div>    <script type="text/javascript">    void function(window,doc,undefined){        var array=[],text='abcdefghijk',key,password='',btn=doc.getElementById('strat'),textarea=doc.getElementById('password');             function unorderedArray(array){            if(({}).toString.call(array).indexOf('Array')===-1) return;            var arr=[],value=array.toString();            arr=array.sort(function(){return Math.random()>0.5?-1:1;});            (arr.toString()===value) && arguments.callee(array);            return arr;        }                  btn.onclick=function(){            key=Math.random().toFixed(1) * 10-1;            array=[0,1,2,3,4,5,6,7,8,9];            password=unorderedArray(array);            password[key]=text[key];            textarea.innerHTML=password.join('');        }    }(window,document);                  //console.log(unorderedArray(a));    </script>         </body>    </html>
  • 1.

  • 2.

  • 3.

  • 4.

  • 5.

  • 6.

  • 7.

  • 8.

  • 9.

  • 10.

  • 11.

  • 12.

  • 13.

  • 14.

  • 15.

  • 16.

  • 17.

  • 18.

  • 19.

  • 20.

  • 21.

  • 22.

  • 23.

  • 24.

  • 25.

  • 26.

  • 27.

  • 28.

  • 29.

  • 30.

  • 31.

  • 32.

  • 33.

  • 34.

  • 35.

  • 36.

  • 37.

  • 38.

  • 39.

  • 40.

  • 41.

怎样乱序排列数组,本人数学比较烂。搜索了一下给array的sort传入一个这样的函数。

sort真是强大啊。

复制

function unorderedArray(array){          if(({}).toString.call(array).indexOf('Array')===-1) return;          var arr=[],value=array.toString();          arr=array.sort(function(){return Math.random()>0.5?-1:1;});          (arr.toString()===value) && arguments.callee(array);          return arr;  }
  • 1.

  • 2.

  • 3.

  • 4.

  • 5.

  • 6.

  • 7.

在用这个方法的时候要避免生成的数组和传入的数组一样,颇废了点功夫,因为数组是复杂类型,有修改所有的都会有变化。所以用一个变量去缓存了传入的数组的值value=array.toString(),然后我生成的数组的值比较一下如果相对就递归一次。保证生成的数组不是顺序的。

用下面的代码生成一个0-9的随机数序号

复制

Math.random().toFixed(1) * 10-1;
  • 1.

用这个序号去获得a-k的一个字母,用这个字母去替换数组中序号相应位置的数字。

在用数组的join方法把获得的数组字符串化

复制

password.join('');
  • 1.

获得一个密钥。

原文:http://www.cnblogs.com/enix/archive/2011/12/22/2297913.html

【编辑推荐】

  1. 大型JavaScript应用程序架构模式

  2.  非常全面的实用JavaScript开发工具列表

  3. JavaScript学习笔记 有问有答

  4. JavaScript函数式编程

  5. JavaScript DOM编程手册

14    2011-12-23 13:42:05    JavaScript