成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

基于規(guī)則評(píng)分的密碼強(qiáng)度檢測(cè)算法分析及實(shí)現(xiàn)(JavaScript)

ernest.wang / 3121人閱讀

摘要:方案簡(jiǎn)單方案算法通過(guò)密碼構(gòu)成分析,結(jié)合權(quán)重分派,統(tǒng)計(jì)得出密碼強(qiáng)度得分。

簡(jiǎn)言

用正則表達(dá)式做用戶密碼強(qiáng)度的通過(guò)性判定,過(guò)于簡(jiǎn)單粗暴,不但用戶體驗(yàn)差,而且用戶帳號(hào)安全性也差。那么如何準(zhǔn)確評(píng)價(jià)用戶密碼的強(qiáng)度,保護(hù)用戶帳號(hào)安全呢?本文分析介紹了幾種基于規(guī)則評(píng)分的密碼強(qiáng)度檢測(cè)算法,并給出了相應(yīng)的演示程序。大家可以根據(jù)自己項(xiàng)目安全性需要,做最適合于自己的方案選擇。

1 方案1 (簡(jiǎn)單)

方案1算法通過(guò)密碼構(gòu)成分析,結(jié)合權(quán)重分派,統(tǒng)計(jì)得出密碼強(qiáng)度得分。得分越高,表示密碼強(qiáng)度越大,也就越安全。方案1算法思想簡(jiǎn)單,實(shí)現(xiàn)容易。

1.1 方案1評(píng)分標(biāo)準(zhǔn)

一、密碼長(zhǎng)度:

5 分: 小于等于4 個(gè)字符

10 分: 5 到7 字符

25 分: 大于等于8 個(gè)字符

二、字母:

0 分: 沒(méi)有字母

10 分: 全都是?。ù螅?xiě)字母

20 分: 大小寫(xiě)混合字母

三、數(shù)字:

0 分: 沒(méi)有數(shù)字

10 分: 1 個(gè)數(shù)字

20 分: 大于1 個(gè)數(shù)字

四、符號(hào):

0 分: 沒(méi)有符號(hào)

10 分: 1 個(gè)符號(hào)

25 分: 大于1 個(gè)符號(hào)

五、獎(jiǎng)勵(lì):

2 分: 字母和數(shù)字

3 分: 字母、數(shù)字和符號(hào)

5 分: 大小寫(xiě)字母、數(shù)字和符號(hào)

1.2 方案1等級(jí)劃分

根據(jù)密碼評(píng)分,將密碼劃分成以下7個(gè)等級(jí):

>= 90: 非常安全(VERY_SECURE)

>= 80: 安全(SECURE)

>= 70: 非常強(qiáng)(VERY_STRONG)

>= 60: 強(qiáng)(STRONG)

>= 50: 一般(AVERAGE)

>= 25: 弱(WEAK)

>= 0: 非常弱( VERY_WEAK)

該評(píng)分標(biāo)準(zhǔn)及等級(jí)劃分,實(shí)際使用時(shí),可小做調(diào)整,但不建議做大的變動(dòng)。

1.3 方案1演示程序

演示程序

1.4 方案1測(cè)試分析
// 評(píng)分 25,純小寫(xiě)字母無(wú)法通過(guò)驗(yàn)證
console.log("aaaaaaaa".score());
// 評(píng)分 45,純數(shù)字無(wú)法通過(guò)驗(yàn)證
console.log("11111111".score());
// 評(píng)分 47,小寫(xiě)+數(shù)字無(wú)法通過(guò)驗(yàn)證
console.log("aa111111".score());
// 評(píng)分 45,小寫(xiě)+大寫(xiě)無(wú)法通過(guò)驗(yàn)證
console.log("aaaaAAAA".score());
// 評(píng)分 50,4位密碼不可能通過(guò)驗(yàn)證
console.log("11!!".score());
// 評(píng)分 70,5位密碼可通過(guò)驗(yàn)證
console.log("0aA!!".score());
// 評(píng)分 67,小寫(xiě)+大寫(xiě)+數(shù)字可通過(guò)驗(yàn)證(8位)
console.log("aA000000".score());
// 評(píng)分 70,數(shù)字+符號(hào)可通過(guò)驗(yàn)證
console.log("000000!!".score());

從以上測(cè)試結(jié)果中,我們可以看出算法是十分的有效的,基本能夠保證密碼具有一定的安全性。但是存在的問(wèn)題也很明顯,其中最主要的問(wèn)題是對(duì)重復(fù)或連續(xù)的字符評(píng)分過(guò)高。以測(cè)試用例中最后一個(gè)為例: 000000!! 可以得到70分,但顯然并不是一個(gè)非常強(qiáng)壯的密碼。

另外,方案1最高可以得到95分,也就是說(shuō)沒(méi)有100分(絕對(duì)安全)的密碼,這一點(diǎn)也是很有智慧的設(shè)計(jì)。

2 方案2

針對(duì)方案1中的不足,方案2中引入了減分機(jī)制。對(duì)于重復(fù)出現(xiàn),連續(xù)出現(xiàn)的字符給予適當(dāng)?shù)臏p分,以使得密碼評(píng)分更準(zhǔn)確。同時(shí)在方案2中密碼的評(píng)分基數(shù)及計(jì)算過(guò)程都十分的復(fù)雜,要想理解其中每一步的含義,請(qǐng)保持足夠的耐心。

2.1 方案2加分項(xiàng)

一、密碼長(zhǎng)度:

公式 :+(n*4),其中n表示密碼長(zhǎng)度

二、大寫(xiě)字母:

公式:+((len-n)*2),其中n表示大寫(xiě)字母?jìng)€(gè)數(shù),len表示密碼長(zhǎng)度

三、小寫(xiě)字母:

公式:+((len-n)*2),其中n表示小寫(xiě)字母?jìng)€(gè)數(shù),len表示密碼長(zhǎng)度

四、數(shù)字:

公式:+(n*4),其中n表示數(shù)字個(gè)數(shù)

條件:滿足n < len,才能得到加分,len表示密碼長(zhǎng)度

五、符號(hào):

公式:+(n*6),其中n表示符號(hào)個(gè)數(shù)

六、位于中間的數(shù)字或符號(hào):

公式:+(n*2),其中n表示位于中間的數(shù)字或符號(hào)個(gè)數(shù)

七、最低條件得分:

公式:+(n*2),其中n表示滿足的最低條件條目數(shù)

條件:只有滿足最低條件,才能得到加分

其中最低條件的條目如下:

1.密碼長(zhǎng)度不小于8位

2.包含大寫(xiě)字母

3.包含小寫(xiě)字母

4.包含數(shù)字

5.包含符號(hào)

最低條件要求滿足條目1并至少滿足條目2-5中的任意三條。

2.2 方案2減分項(xiàng)

一、只有字母:

公式:-n,其中n表示字母?jìng)€(gè)數(shù)

二、只有數(shù)字:

公式:-n,其中n表示數(shù)字個(gè)數(shù)

三、重復(fù)字符數(shù)(大小寫(xiě)敏感):

該項(xiàng)描述復(fù)雜,具體計(jì)算方法見(jiàn)如下示例程序:

var pass = "1111aaDD";  //示意密碼
var repChar = 0;
var repCharBonus = 0;  //得分
var len = pass.length;
for(var i = 0; i < len; i++) {
    var exists = false;
    for (var j = 0; j < len; j++) {
        if (pass[i] == pass[j] && i != j) {
            exists = true;
            repCharBonus += Math.abs(len/(j-i));
        }
    }
    if (exists) {
        repChar++;
        var unqChar = len - repChar;
        repCharBonus = (unqChar) ? Math.ceil(repCharBonus/unqChar) : Math.ceil(repCharBonus);
    }
}

四、連續(xù)大寫(xiě)字母:

公式:-(n*2),其中n表示連續(xù)大寫(xiě)字母出現(xiàn)的次數(shù)

舉例:如輸入AUB,則n=2

五、連續(xù)小寫(xiě)字母:

公式:-(n*2),其中n表示連續(xù)小寫(xiě)字母出現(xiàn)的次數(shù)

舉例:如輸入aub,則n=2

六、連續(xù)數(shù)字:

公式:-(n*2),其中n表示連續(xù)數(shù)字出現(xiàn)的次數(shù)

舉例:如輸入381,則n=2

七、正序或逆序字母:

公式:-(n*3),其中n表示連續(xù)發(fā)生的次數(shù)

正序或逆序是指字母表中的順序

不區(qū)分大小寫(xiě)

條件:只有連續(xù)3個(gè)字母或以上,才會(huì)減分,

例1:如輸入ABC,則n=1

例2:如輸入dcBA,則n=2

八、正序或逆序數(shù)字:

公式:-(n*3),其中n表示連續(xù)發(fā)生的次數(shù)

條件:只有連續(xù)3個(gè)數(shù)字或以上,才會(huì)減分

例1:如輸入123,則n=1,

例2:如輸入4321,則n=2

例3:如輸入12,則不會(huì)減分

九、正序或逆序符號(hào):

公式:-(n*3),其中n表示連續(xù)發(fā)生的次數(shù)

條件:只有連續(xù)3個(gè)符號(hào)或以上,才會(huì)減分

2.3 方案2等級(jí)劃分

根據(jù)密碼評(píng)分,將密碼劃分成以下5個(gè)等級(jí):

>= 80: 非常強(qiáng)(VERY_STRONG)

>= 60: 強(qiáng)(STRONG)

>= 40: 好(GOOD)

>= 20: 弱(WEAK)

>= 0: 非常弱( VERY_WEAK)

2.4 方案2演示程序

演示程序

2.5 方案2測(cè)試分析
// 評(píng)分 0
console.log("11111111".score());
// 評(píng)分 2
console.log("aa111111".score());
// 評(píng)分 38
console.log("000000!!".score());
// 評(píng)分 76
console.log("Asdf2468".score());
// 評(píng)分 76
console.log("Mary2468".score());
// 評(píng)分 60
console.log("@dmin246".score());

從以上測(cè)試可以看出方案2較方案1有了比較大的改進(jìn)和提升,尤其是對(duì)連續(xù)或重復(fù)字符上表現(xiàn)出色。但是方案2也存在明顯的不足,主要缺點(diǎn)包括對(duì)人名(Mary)、單詞(Story)、鍵盤(pán)上相連的鍵(Asdf)、L33T(@dmin)沒(méi)法識(shí)別。

L33T:是指把拉丁字母換成數(shù)字或是特殊符號(hào)的書(shū)寫(xiě)形式。例如把E寫(xiě)成3、A寫(xiě)成@、to寫(xiě)成2、for寫(xiě)成4。

3 方案3 zxcvbn 3.1 簡(jiǎn)要說(shuō)明

針對(duì)方案2中的不足,引入了方案3,進(jìn)一步的提長(zhǎng)密碼強(qiáng)度。方案3完全引入一個(gè)第三方檢驗(yàn)工具zxcvbn。

zxcvbn是一個(gè)受密碼破解啟發(fā)而來(lái)的密碼強(qiáng)度估算器。它通過(guò)模式匹配和保守估計(jì),大概可以識(shí)別大約30K左右的常規(guī)密碼。主要基于美國(guó)人口普查數(shù)據(jù),維基,美國(guó)電影,電視流行詞以及其它一些常用模式,像日期,重復(fù)字符,序列字符,鍵盤(pán)模式和L33T會(huì)話等。

從算法的設(shè)計(jì)思想上,該方案完全秒殺基于構(gòu)成的統(tǒng)計(jì)分析方法(前兩種方法)。同時(shí)zxcvbn支持多種開(kāi)發(fā)語(yǔ)言。因其模式的復(fù)雜及字典的存在,當(dāng)前版本的zxcvbn.js大約有800多K。

要了解項(xiàng)目的詳情及算法見(jiàn)zxcvbn官網(wǎng):

github zxcvbn

3.2 方案3演示程序

演示程序

以上是三胖對(duì)密碼強(qiáng)度檢測(cè)算法和方案的理解和分析,不足之處還請(qǐng)大家多多指正!

原文鏈接

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/93502.html

相關(guān)文章

  • 區(qū)塊鏈學(xué)習(xí)之密碼學(xué)安全技術(shù)(五)

    摘要:非對(duì)稱加密算法的安全性往往需要基于數(shù)學(xué)問(wèn)題來(lái)保障,目前主要有基于大數(shù)質(zhì)因子分解離散對(duì)數(shù)橢圓曲線等經(jīng)典數(shù)學(xué)難題進(jìn)行保護(hù)。消息認(rèn)證碼基于對(duì)稱加密,可以用于對(duì)消息完整性進(jìn)行保護(hù)。 Hash 算法與數(shù)字摘要 Hash (哈?;蛏⒘校┧惴ㄋ軐⑷我忾L(zhǎng)度的二進(jìn)制明文串映射為較短的(通常是固定長(zhǎng)度的)二進(jìn)制串(Hash值),并且不同的明文很難映射為相同的Hash值。 Hash 定義 Hash (哈希...

    aboutU 評(píng)論0 收藏0
  • 美國(guó)“大眾點(diǎn)評(píng)網(wǎng)”Yelp如何利用深度學(xué)習(xí)對(duì)美食照片進(jìn)行評(píng)分

    摘要:結(jié)果,我們當(dāng)時(shí)非常抱以厚望的就是卷積神經(jīng)網(wǎng)絡(luò)模型,或者說(shuō)是。單反相機(jī)可以讓攝影師調(diào)節(jié)透鏡類型和光圈大小,更好地控制把相片里的哪個(gè)部分作為焦點(diǎn)。更進(jìn)一步,單反相機(jī)的傳感器更大,對(duì)光線更敏感,即使在非?;璋档沫h(huán)境下也可以拍出非常漂亮的相片。 Yelp的數(shù)據(jù)庫(kù)中已經(jīng)存儲(chǔ)了幾千萬(wàn)張相片,用戶們現(xiàn)在每天都會(huì)上傳大概十萬(wàn)張,而且速度還在不斷加快。事實(shí)上,我們發(fā)現(xiàn)相片的上傳增長(zhǎng)率大于相片的查看率。這些相片...

    legendmohe 評(píng)論0 收藏0
  • 重磅 | 完備 AI 學(xué)習(xí)路線,最詳細(xì)資源整理!

    摘要:是你學(xué)習(xí)從入門(mén)到專家必備的學(xué)習(xí)路線和優(yōu)質(zhì)學(xué)習(xí)資源。的數(shù)學(xué)基礎(chǔ)最主要是高等數(shù)學(xué)線性代數(shù)概率論與數(shù)理統(tǒng)計(jì)三門(mén)課程,這三門(mén)課程是本科必修的。其作為機(jī)器學(xué)習(xí)的入門(mén)和進(jìn)階資料非常適合。書(shū)籍介紹深度學(xué)習(xí)通常又被稱為花書(shū),深度學(xué)習(xí)領(lǐng)域最經(jīng)典的暢銷書(shū)。 showImg(https://segmentfault.com/img/remote/1460000019011569); 【導(dǎo)讀】本文由知名開(kāi)源平...

    荊兆峰 評(píng)論0 收藏0
  • 差分隱私學(xué)習(xí)總結(jié)

    摘要:基本思想上圖給出了差分隱私的一般性方法。定義一給出了差分隱私的數(shù)學(xué)表達(dá)。從定義可以看出差分隱私技術(shù)限制了任意一條記錄對(duì)算法輸出結(jié)果的影響。而基于不同噪音機(jī)制且滿足差分隱私的算法所需噪音大小與全局敏感性密切相關(guān)。 1. 蘋(píng)果、微軟、谷歌與差分隱私的愛(ài)恨糾葛 showImg(https://segmentfault.com/img/bVYQji?w=550&h=367); 在2016 年6...

    laznrbfe 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<