0

0

一种密码复杂度的简单计算方式

PHP中文网

PHP中文网

发布时间:2016-05-25 17:08:35

|

1390人浏览过

|

来源于php中文网

原创

 1, 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 密码:admin 登陆地址/admin/login.asp商家测试帐号:admin 密码:admin 登陆地址/user/ad

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
c++主流开发框架汇总
c++主流开发框架汇总

本专题整合了c++开发框架推荐,阅读专题下面的文章了解更多详细内容。

97

2026.01.09

c++框架学习教程汇总
c++框架学习教程汇总

本专题整合了c++框架学习教程汇总,阅读专题下面的文章了解更多详细内容。

51

2026.01.09

学python好用的网站推荐
学python好用的网站推荐

本专题整合了python学习教程汇总,阅读专题下面的文章了解更多详细内容。

139

2026.01.09

学python网站汇总
学python网站汇总

本专题整合了学python网站汇总,阅读专题下面的文章了解更多详细内容。

12

2026.01.09

python学习网站
python学习网站

本专题整合了python学习相关推荐汇总,阅读专题下面的文章了解更多详细内容。

19

2026.01.09

俄罗斯手机浏览器地址汇总
俄罗斯手机浏览器地址汇总

汇总俄罗斯Yandex手机浏览器官方网址入口,涵盖国际版与俄语版,适配移动端访问,一键直达搜索、地图、新闻等核心服务。

83

2026.01.09

漫蛙稳定版地址大全
漫蛙稳定版地址大全

漫蛙稳定版地址大全汇总最新可用入口,包含漫蛙manwa漫画防走失官网链接,确保用户随时畅读海量正版漫画资源,建议收藏备用,避免因域名变动无法访问。

432

2026.01.09

php学习网站大全
php学习网站大全

精选多个优质PHP入门学习网站,涵盖教程、实战与文档,适合零基础到进阶开发者,助你高效掌握PHP编程。

49

2026.01.09

php网站搭建教程大全
php网站搭建教程大全

本合集专为零基础用户打造,涵盖PHP网站搭建全流程,从环境配置到实战开发,免费、易懂、系统化,助你快速入门建站!

13

2026.01.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Vue.js 微实战--十天技能课堂
Vue.js 微实战--十天技能课堂

共18课时 | 1.1万人学习

Vue.js 开发基础教程
Vue.js 开发基础教程

共33课时 | 7.1万人学习

玩转CSS Flexbox弹性盒子布局
玩转CSS Flexbox弹性盒子布局

共13课时 | 2.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号