서문:
비밀번호 강도는 매우 일반적인 기능이며 상대적으로 간단합니다. 가장 중요한 것은 이 강도 규칙을 공식화하는 방법입니다. 이제 비밀번호 강도 확인을 업그레이드해야 합니다. 이전 확인은 비교적 간단했지만 이제는 더 이상 요구 사항을 충족할 수 없습니다. 이제 유연하게 변경할 수 있고 여러 수준의 구성 가능한 옵션이 있는 비밀번호 강도 확인이 필요합니다. 다음 내용. 설계하기 전에 유사한 보다 성숙한 강도 규칙도 참조했지만 모두 암호 강도 규칙을 제어하는 점수 매기기 메커니즘을 채택하여 구성 가능성이 높고 유연합니다. 원래는 직접 사용하고 싶었지만 상대적으로 오래되었고 일부는 회사의 개발 요구에 적합하지 않다는 것을 알았습니다. 아마도 이 작업은 상대적으로 단순해서 아무도 업데이트하거나 새로운 코드를 작성하지 않았기 때문에 규칙과 코드를 디자인했습니다. 나 자신이 코드를 작성했습니다.
구현:
원리:
채점 메커니즘을 사용하여 채점은 3가지 범주(기본 점수, 가산점, 감점)로 나누어지며, 기본 점수가 먼저 계산됩니다. 보너스 포인트는 계산된 부분이며, 마지막으로 차감할 포인트를 차감하여 최종 총점을 얻습니다.
규칙:
비밀번호 입력 유형(문자, 대문자, 소문자, 특수 문자).
기본 포인트는 다음과 같습니다. 비밀번호 길이는 각 길이가 1포인트이며, 18자를 초과하는 길이는 18포인트입니다. 비밀번호에 입력 유형이 포함된 경우 기본 포인트가 4포인트 증가합니다.
보너스 포인트: 비밀번호 입력 유형의 총 개수가 2 이상이면 2 포인트가 추가됩니다. 총 5 이상이면 4 포인트가 추가됩니다.
동일한 유형의 문자가 연속으로 반복될 경우 1회당 1점이 감점됩니다.
총점은 50점입니다.
0~10점: 부적격(약함)
11~20점: 보통
21~30점: 보통
31~40점: 강함
41~50점: 안전
*점수 범위는 자유롭게 조정 및 일치시킬 수 있습니다. 실제로 전체 채점 규칙은 필요에 따라 수정될 수 있습니다.
코드:
function 비밀번호Grade(pwd) {
var Score = 0
var regexArr = ['[0-9] ', '[a-z]' , '[A-Z]', '[\W_]'];
varpeatCount = 0
var prevChar = ''
//길이 확인
var len = pwd.length;
score = len > 18 ? 18 : len
//(var i = 0, num = regexArr.length; i < num; i ) { if (eval('/ ' regexArr[i] '/').test(pwd)) 점수 = 4; }
//보너스 포인트
for (var i = 0, num = regexArr.length; i < num i ) {
if (pwd.match(eval('/' regexArr[i] '/g')) && pwd.match(eval('/' regexArr[i] '/g' )).length >= 2) 점수 = 2;
if (pwd.match(eval('/' regexArr[i] '/g')) && pwd.match(eval('/' regexArr[i ] '/g')) .length >= 5) 점수 = 2;
}
//deduction
for (var i = 0, num = pwd.length; i < num; i ) {
if ( pwd.charAt(i) == prevChar) RepeatCount ;
else prevChar = pwd.charAt(i)
}
score -=peatCount * 1; 점수
}
점수 예:
1111=7점
1@dA=20점
111111=9점
abcdef1=19점
abcd12=18포인트
abc123=18포인트
ab123A=22포인트
aA12j@=26포인트
aasdfkjjsjjj=16포인트
111111111dsfskjjkjeh=25포인트
1111dsfskjjkjeh =25포인트
123 1kb#4ktSF!T@ s^j#hkWH=50포인트
skhk3293ks=24포인트
sfh#4hHdk=29포인트
bure12#sk=27포인트
a@s@dk23= 26점
bruceLi@09kt =34점
ce@Li1=24점
END
모두가 이 채점 규칙에 대해 토론할 수 있습니다. 또한 자신이 가지고 있는 규칙과 코드를 직접 제공할 수도 있습니다. 모든 사람의 연구와 의사소통을 용이하게 하기 위해서는 코드를 지속적으로 유지 관리하고 업데이트해야 하며, 그래야 우리가 전임자의 스크립트를 기반으로 계속해서 발전할 수 있습니다.