设为首页收藏本站淘宝杂货铺

从F到0 - From F to 0

 找回密码
 注册已关闭
搜索
查看: 2054|回复: 2
收起左侧

[PHP/ASP/JSP] PHP密码安全等级打分/密码强度/复杂性/安全性检测(支持:数字/大小写字母/特殊符号)

[复制链接]
发表于 2019-3-17 19:10:51 | 显示全部楼层 |阅读模式


  1. <?php

  2. $pass_test = array(
  3.         -1 => "无效",
  4.         0 => "无",
  5.         1 => "极弱",
  6.         2 => "较弱",
  7.         3 => "弱",
  8.         4 => "中等",
  9.         5 => "强",
  10.         6 => "较强",
  11.         7 => "极强"
  12.         );
  13. /*
  14. 密码安全等级检测函数 返回-1~7 数字越高密码越强
  15. 禁止空格、中文、回车、退格等符号否则返回 -1
  16. */
  17. function password_safe_level($password){
  18.         $level=0;                        //密码安全等级(密码强度)
  19.         $appear_number = 0;                //出现数字
  20.         $appear_big_letter = 0;                //出现大写字母
  21.         $appear_small_letter = 0;        //出现小写字母
  22.         $appear_symbol = 0;                //出现特殊符号


  23.         $len = strlen($password);

  24.                 if($len <= 0) return 0;
  25.                 if($len >= 8) $level++;
  26.                 if($len >= 16) $level++;
  27.                 if($len >= 24) $level++;

  28.                 do {
  29.                         $ascii = ord($password[$len-1]);
  30.                         if($ascii >= 48 && $ascii <= 57 && !$appear_number){
  31.                                 $appear_number = 1;
  32.                                 $level++;

  33.                                 continue;
  34.                         } elseif($ascii >= 65 && $ascii <= 90 && !$appear_big_letter){
  35.                                 $appear_big_letter = 1;
  36.                                 $level++;
  37.                                 continue;
  38.                         } elseif($ascii >= 97 && $ascii <= 122 && !$appear_small_letter){
  39.                                 $appear_small_letter = 1;
  40.                                 $level++;
  41.                                 continue;
  42.                         } elseif(!$appear_symbol && (($ascii >= 33 && $ascii <=47) || ($ascii >= 58 && $ascii <=64) || ($ascii >= 91 && $ascii <=96) || ($ascii >= 123 && $ascii <=126))){
  43.                                 $appear_symbol = 1;
  44.                                 $level++;
  45.                                 continue;
  46.                         } elseif($ascii <= 32 || $ascii >= 127){
  47.                                 return -1;
  48.                         }

  49.                 } while(--$len);

  50.                 return $level;
  51. }
  52. echo $pass_test[password_safe_level("中文密码")]."<br>";
  53. echo $pass_test[password_safe_level("123 456")]."<br>";

  54. echo $pass_test[password_safe_level("")]."<br>";
  55. echo $pass_test[password_safe_level("123456")]."<br>";
  56. echo $pass_test[password_safe_level("abc123")]."<br>";
  57. echo $pass_test[password_safe_level("abc123DEF456")]."<br>";
  58. echo $pass_test[password_safe_level("abc123DEF456!@#")]."<br>";
  59. echo $pass_test[password_safe_level("abc123DEF456!@#&*(")]."<br>";
  60. echo $pass_test[password_safe_level("@@@@@@@@abc123DEF456!@#&*(")]."<br>";

  61. ?>

复制代码
发表于 2019-3-17 19:54:46 | 显示全部楼层
顶顶顶顶顶
发表于 2019-3-18 09:47:34 | 显示全部楼层
顶顶顶顶顶
您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

QQ|手机版|Archiver|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备15010402000325号

腾讯云安全认证

GMT+8, 2024-4-20 23:58 , Processed in 0.484028 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表