避免悲剧 JavaScript密码生成器

开发 前端
最近被暴库的很多,密码安全成为重大问题!如何避免简单密码呢?还在冥思苦想密码?No

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

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"   
  2.         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">    
  3. <html xmlns="http://www.w3.org/1999/xhtml">    
  4. <head>    
  5.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>    
  6.     <title></title>    
  7. </head>    
  8. <body>    
  9. <div>    
  10.      
  11. <input id="strat" type="button" value="开始" />    
  12. <textarea rows="10" cols="25" id="password"></textarea>    
  13. </div>    
  14. <script type="text/javascript">    
  15. void function(window,doc,undefined){    
  16.     var array=[],text='abcdefghijk',key,password='',btn=doc.getElementById('strat'),textarea=doc.getElementById('password');    
  17.      
  18.     function unorderedArray(array){    
  19.         if(({}).toString.call(array).indexOf('Array')===-1) return;    
  20.         var arr=[],value=array.toString();    
  21.         arr=array.sort(function(){return Math.random()>0.5?-1:1;});    
  22.         (arr.toString()===value) && arguments.callee(array);    
  23.         return arr;    
  24.     }    
  25.      
  26.      
  27.     btn.onclick=function(){    
  28.         key=Math.random().toFixed(1) * 10-1;    
  29.         array=[0,1,2,3,4,5,6,7,8,9];    
  30.         password=unorderedArray(array);    
  31.         password[key]=text[key];    
  32.         textarea.innerHTML=password.join('');    
  33.     }    
  34. }(window,document);    
  35.      
  36.      
  37.     //console.log(unorderedArray(a));    
  38. </script>    
  39.      
  40. </body>    
  41. </html>   

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

sort真是强大啊。

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

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

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

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

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

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

  1. password.join(''); 

获得一个密钥。

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

【编辑推荐】

  1. 大型JavaScript应用程序架构模式
  2.  非常全面的实用JavaScript开发工具列表
  3. JavaScript学习笔记 有问有答
  4. JavaScript函数式编程
  5. JavaScript DOM编程手册
责任编辑:陈贻新 来源: 小玉西瓜的博客
相关推荐

2022-10-17 18:29:55

2023-07-21 17:08:30

2023-03-01 00:07:32

JavaScript迭代器生成器

2011-05-19 11:30:00

密码密码生成器

2010-09-07 16:31:17

SQL语句insert

2021-04-22 21:15:38

Generator函数生成器

2015-08-25 11:07:58

2017-07-01 16:02:39

分布式ID生成器

2022-02-15 10:30:58

UUID

2023-05-17 16:02:00

CSS工具代码生成器

2017-09-09 15:13:10

2021-12-04 22:07:44

Python

2017-09-06 09:26:03

Python生成器协程

2015-08-25 15:54:17

程序员代码生成器

2021-07-23 11:24:54

Create Inc开源G代码生成器

2023-07-02 14:14:37

ChatGPTMidjourney

2020-10-10 09:19:58

JavaScript开发技术

2022-12-15 08:49:58

ReactQR生成器

2023-05-04 16:24:10

人工智能图像生成器

2023-02-07 16:11:41

点赞
收藏

51CTO技术栈公众号