一种密码复杂度的简单计算方式
May 25, 2016 pm 05:08 PM1, 2, 3, 4); private static $typeChange = array(array(1, 2), array(1, 3), array(1, 4), array(2, 3), array(2, 4), array(3, 4)); private static $typeChangeComplexs = array(1, 1, 2, 1, 2, 2); public static function computeComplex($password) { $complex = 0; $password = (string)$password; $length = strlen($password); $prefixType = 0; $regularChars = array(); for($i = 0; $i < $length; $i++){ if(ctype_digit($password[$i])){ $type = 1; }elseif(ctype_lower($password[$i])){ $type = 2; }elseif(ctype_upper($password[$i])){ $type = 3; }else{ $type = 4; } if(!in_array($password[$i], $regularChars)){ //规律性字符,不计入复杂度 $complex += self::$typeComplexs[$type]; if($prefixType){ $changeType = array($type, $prefixType); sort($changeType); $change = array_search($changeType, self::$typeChange); if($change !== false){ $complex += self::$typeChangeComplexs[$change]; } } } $prefixType = $type; $regularChars = self::getRegularChars($password[$i], $prefixType); } return $complex; } /** * 获取一个字符的规律字符集 * 下列规则被认为是有规则的 * 1)重复字符 * 2)数字递增或者递减 * 3)字母递增或者递减 * @param unknown_type $prefixChar */ private static function getRegularChars($prefix, $prefixType) { $regularChars = array($prefix); switch($prefixType){ case 1: $regularChars[] = $prefix + 1; $regularChars[] = $prefix - 1; break; case 2: case 3: $regularChars[] = chr(ord($prefix) + 1); $regularChars[] = chr(ord($prefix) - 1); $regularChars = array_filter($regularChars, 'ctype_alnum'); break; } return $regularChars; } } ?>
로그인 후 복사
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

인기 기사
Repo : 팀원을 부활시키는 방법
3 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
스플릿 소설을이기는 데 얼마나 걸립니까?
3 몇 주 전
By DDD
R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
헬로 키티 아일랜드 어드벤처 : 거대한 씨앗을 얻는 방법
3 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌

인기 기사
Repo : 팀원을 부활시키는 방법
3 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
스플릿 소설을이기는 데 얼마나 걸립니까?
3 몇 주 전
By DDD
R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
헬로 키티 아일랜드 어드벤처 : 거대한 씨앗을 얻는 방법
3 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 기사 태그

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제
Gmail 이메일의 로그인 입구는 어디에 있나요?
7288
9


자바 튜토리얼
1622
14


Cakephp 튜토리얼
1342
46


라라벨 튜토리얼
1259
25


PHP 튜토리얼
1206
29

