JS驗證密碼安全級別


先來說一下這個問題:如何驗證密碼的安全級別。例如:小於6個字符的密碼不許保存,當字符數大於等於6的時候,如果含有數字、小寫字母、大寫字母、特殊字符中的一種時為低安全級別,含有兩種或三種的時候為中安全級別,含有四種的時候為高安全界別。

接下來我用兩種方法去實現這個問題:

第一種方法:遍歷password字符串中所有的字符,根據字符的ASCII 碼判斷字符串中都有哪幾種字符,並且用一個數組的不同位表示是否含有某種字符。

function AnalyzePasswordSecurityLevel(password) {
    var pwdArray = new Array();
    var securityLevelFlag = 0;
    if (password.length < 6) {
        return 0;
    }
    else {
        var securityLevelFlagArray = new Array(0, 0, 0, 0);
        for (var i = 0; i < password.length; i++) {
            var asciiNumber = password.substr(i, 1).charCodeAt();
            if (asciiNumber >= 48 && asciiNumber <= 57) {
                securityLevelFlagArray[0] = 1;  //digital
            }
            else if (asciiNumber >= 97 && asciiNumber <= 122) {
                securityLevelFlagArray[1] = 1;  //lowercase
            }
            else if (asciiNumber >= 65 && asciiNumber <= 90) {
                securityLevelFlagArray[2] = 1;  //uppercase
            }
            else {
                securityLevelFlagArray[3] = 1;  //specialcase
            }
        }

        for (var i = 0; i < securityLevelFlagArray.length; i++) {
            if (securityLevelFlagArray[i] == 1) {
                securityLevelFlag++;
            }
        }
        return securityLevelFlag;
    }
}

這里的securityLevelFlag等於幾就代表字符串中含有幾種字符。

 

第二種方法:用正則表達式去判斷密碼中都包含了哪幾種字符

function AnalyzePasswordSecurityLevel(password) {
    var securityLevelFlag = 0;
    if (password.length < 6) {
        return 0;
    }
    else {
        if (/[a-z]/.test(password)){
            securityLevelFlag++;    //lowercase
        }
        if (/[A-Z]/.test(password)){
            securityLevelFlag++;    //uppercase
        } 
        if(/[0-9]/.test(password)){
            securityLevelFlag++;    //digital
        }
        if(containSpecialChar(password)){
            securityLevelFlag++;    //specialcase
        }
        return securityLevelFlag;
    }
}

function containSpecialChar(str)   
{   
    var containSpecial = RegExp(/[(\ )(\~)(\!)(\@)(\#)(\$)(\%)(\^)(\&)(\*)(\()(\))(\-)(\_)(\+)(\=)(\[)(\])(\{)(\})(\|)(\\)(\;)(\:)(\')(\")(\,)(\.)(\/)(\<)(\>)(\?)(\)]+/);
    return (containSpecial.test(str));   
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM