本文實例講述了JavaScript動態檢測密碼強度原理及實現方法。分享給大家供大家參考,具體如下:
在注冊賬戶,設置密碼時,會出現密碼強度動態檢測,網上看了一些帖子,大多只寫了具體的實現過程,而沒有對原理的分析過程。下面著重講一下其原理。
原理分析
通常實現密碼強度動態判斷有兩種方案實現:
正則。但其效率低一點,難度也大一些。 字符串,函數和運算符。這里用第二種方案,但是如何判斷一個密碼串是強還是弱呢?
一般我們的密碼會設置為數字、字母(大小寫)、特殊符號三類。
強:密碼串包含其中三種或以上 中:密碼串包含其中兩種 弱:密碼串包含其中一種| 字符類型 | 二進制表示 | ASCII |
|---|---|---|
| 數字 | 0001 | 48~57 |
| 小寫字母 | 0010 | 97~122 |
| 大寫字母 | 0100 | 65~90 |
| 特殊字符 | 1000 | 其他 |
如有一些字符串:
| 字符串 | 二進制表示 | 十進制 |
|---|---|---|
| 5972 | 0001 || 0001 || 0001 || 0001 | 0001 —> 1 |
| boa | 0010 || 0010 || 0010 | 0010 —> 2 |
| AOPA | 0100 || 0100 || 0100 || 0100 | 0100 —> 4 |
| @!_$# | 1000 || 1000 || 1000 || 1000 || 1000 | 1000 —> 8 |
| 12ab(2種) | 0001 || 0001 || 0010 || 0010 | 0011—> 3 |
| 12Ab(3種) | 0001 || 0001 || 0100 || 0010 | 0111—> 7 |
| 1_Ab(4種) | 0001 || 1000 || 0100 || 0010 | 1111—> 15 |
也就是4位二進制數,1的個數越多,密碼強度越大,四盞燈,亮的個數越多,照的越亮。
把1的個數轉換為強度:
循環4次,每次和1做“位與”運算。如果得到真,那么強度等級+1,否則不加。每循環完一次,移位操作一次。
新聞熱點
疑難解答
圖片精選