自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

避免悲劇 JavaScript密碼生成器

開(kāi)發(fā) 前端
最近被暴庫(kù)的很多,密碼安全成為重大問(wèn)題!如何避免簡(jiǎn)單密碼呢?還在冥思苦想密碼?No

我為大家準(zhǔn)備了一個(gè)密碼生成工具,有0-9和a-k的英文字母組成,數(shù)字是亂序排列。字母隨機(jī)一個(gè)替換掉一個(gè)數(shù)字,生成一個(gè)長(zhǎng)度為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="開(kāi)始" />    
  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>   

怎樣亂序排列數(shù)組,本人數(shù)學(xué)比較爛。搜索了一下給array的sort傳入一個(gè)這樣的函數(shù)。

sort真是強(qiáng)大啊。

  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;  

在用這個(gè)方法的時(shí)候要避免生成的數(shù)組和傳入的數(shù)組一樣,頗廢了點(diǎn)功夫,因?yàn)閿?shù)組是復(fù)雜類(lèi)型,有修改所有的都會(huì)有變化。所以用一個(gè)變量去緩存了傳入的數(shù)組的值value=array.toString(),然后我生成的數(shù)組的值比較一下如果相對(duì)就遞歸一次。保證生成的數(shù)組不是順序的。

用下面的代碼生成一個(gè)0-9的隨機(jī)數(shù)序號(hào)

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

用這個(gè)序號(hào)去獲得a-k的一個(gè)字母,用這個(gè)字母去替換數(shù)組中序號(hào)相應(yīng)位置的數(shù)字。

在用數(shù)組的join方法把獲得的數(shù)組字符串化

  1. password.join(''); 

獲得一個(gè)密鑰。

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

【編輯推薦】

  1. 大型JavaScript應(yīng)用程序架構(gòu)模式
  2.  非常全面的實(shí)用JavaScript開(kāi)發(fā)工具列表
  3. JavaScript學(xué)習(xí)筆記 有問(wèn)有答
  4. JavaScript函數(shù)式編程
  5. JavaScript DOM編程手冊(cè)
責(zé)任編輯:陳貽新 來(lái)源: 小玉西瓜的博客
相關(guān)推薦

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

密碼密碼生成器

2025-01-06 09:06:04

JavaScriptWeb 開(kāi)發(fā)Generators

2015-08-25 11:07:58

2017-07-01 16:02:39

分布式ID生成器

2025-01-23 08:36:27

CSS開(kāi)發(fā)工具

2010-09-07 16:31:17

SQL語(yǔ)句insert

2021-04-22 21:15:38

Generator函數(shù)生成器

2024-11-01 15:51:06

2022-02-15 10:30:58

UUID

2023-07-02 14:14:37

ChatGPTMidjourney

2015-08-25 15:54:17

程序員代碼生成器

2017-09-06 09:26:03

Python生成器協(xié)程

2021-12-04 22:07:44

Python

2021-07-23 11:24:54

Create Inc開(kāi)源G代碼生成器

2024-08-19 00:00:00

表單生成器開(kāi)發(fā)開(kāi)源

2023-05-17 16:02:00

CSS工具代碼生成器

2017-09-09 15:13:10

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)