一种密码复杂度的简单计算方式
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 までご連絡ください。

人気の記事
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌

人気の記事
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7288
9


Java チュートリアル
1622
14


CakePHP チュートリアル
1342
46


Laravel チュートリアル
1259
25


PHP チュートリアル
1206
29

