C++实现密码强度测试

最近在博客中看到许多用js写的密码强度检测,我觉得挺有意思的,所以呢我打算自己也写个来玩玩,最可悲的是我还没学js,当然这不重要,所以呢打算用C++来写一个密码强度检测,这里我来给大家说说用JS写的和用C++写的不同之处

JS写的密码强度检测:当你输入一串>=6 位数的时候 他后面会自动弹出密码的强度 ,还有你再继续输入然后他后面的密码强度会更换 (当然我也尝试解决过这个问题,写出来就一直只能输入6位数,由于我技术有限,如果大家自己能写出来的话可以去试试);

C++写的密码强度检测:当你输入一串>=6位数的时候 你要按下回车才能将字符串读入内存中,这样相比往往更JS还是有一定的差距的。

接下来我们就来看下这密码强度检测的规则吧;

* 1) 任何在1-6之间的字符的组合,弱;例如: win
* 2) 任何字符数的两类字符组合,中; 例如: win123
* 3) 12位字符数以下的三类或四类字符组合,强; 例如: win123abcABC
* 4) 12位字符数以上的三类或四类字符组合,非常好。 例如:win123abcABC!

思路:写个子函数然后遍历查找字符串大写小写还有数字其他字符是否存在,这里记住了如果存在某个字符只计数一次。然后再返回给主函数,主函数主要判断密码又几类字符组成然后再按相应的数输出密码强度;

下面是代码:

 1 #include <iostream>
 2 #include <cstring>
 3 #include <cctype>
 4 using namespace std;
 5 int fun(char password[]);
 6 int main(int argc, char* argv[])
 7 {
 8     int i;
 9     char password[16];
10     stop:cout<<"Password:";gets(password);
11     while(strlen(password)>=6&&strlen(password)<=16){
12     switch(fun(password))
13     {
14     case 1:cout<<"弱 ★"<<endl;break;
15     case 2:cout<<"中 ★ ★"<<endl;break;
16     case 3:cout<<"强 ★ ★ ★"<<endl;break;
17     case 4:cout<<"非常好 ★ ★ ★ ★"<<endl;break;
18     }cout<< "Password:";gets(password);
19     }
20     cout<<"密码最少6~16位 请重新输入:"<<endl;goto stop;
21     return 0;
22 }
23 int fun(char password[])
24 {
25     int i,count=0,a=1,b=1,c=1;
26
27        for(i=0;i<strlen(password);i++)
28          if(a&&islower(password[i])) count++,a=0;
29           else if(b&&isupper(password[i])) count++,b=0;
30             else if(c&&isdigit(password[i])) count++,c=0;
31                else if(!islower(password[i])&&!isupper(password[i])&&!isdigit(password[i])) count++;
32                  return count;
33 }

最后附上一张运行结果:

PS:如果大家还有更好的思路也可以自己写写试试,最后谢谢大家的阅读。

时间: 2025-01-10 17:15:06

C++实现密码强度测试的相关文章

做了一个密码强度输入测试

<!doctype html> <html> <head> <meta charset="utf-8"> <title>密码强度输入测试</title> <style type="text/css"> .cont { margin-left:300px; margin-top:50px; border:solid 1px #ccc; width:520px; padding:20px

Js判断密码强度并显示提示信息

用javascipt实现的Ajax判断密码强弱的功能,大多数有用户注册功能的网站,都会有这么一个功能,作为WEB程序员,应该会写这种小模块哦,不懂的就看下这个例子,觉得挺简单,当初帮助了不少人学会了密码强度的检测. 表单部分,用来显示密码框和密码强度提示信息: <form name=form1 action="" > 请设置密码:<input type="password" size="10" onKeyUp="pwS

javascript 按位或(|),无符号右移(&gt;&gt;&gt;)运算,组合技巧来实现————密码强度提示,四种情况??

直接上代码,原来的代码中,switch中的第一个case,判断之后,少加了个break 跳出判断语句,害得我查了半天,“怎么样式老是不对,不科学啊,呵呵,原来是没跳出case的判断了,还会执行后面的判断!!,哎,嘿嘿,不过后来还是发现了,开心中...” 原文地址:http://www.cnblogs.com/wybztn/archive/2009/11/18/1605285.html 这里还有个重要的设计技巧, 0001, 0010, 0100, 1000各代表一种情况的话,组合起来就有很多种情

密码强度

/[A-Z]//[a-z]//[\d]//\W|_/ match sysbol 测试正则的页面 : http://www.rubular.com/r/UAwoaPM0Ji 通常需要 字幕大写,小写,数字, 符号 和 length = 8-10. asp.net identity 可以通过 manager 去 setup, 通常我们全局是公用一个 manager 的, 可以通过 recreate -> override 来解决不同 role 不同的密码强度问题. 不然就在 api model 那里

mysql 5.6密码强度插件使用

在mysql 5.6对密码的强度进行了加强,推出了validate_password 插件.支持密码的强度要求. 此插件要求版本:5.6.6 以上版本安装方式: 1.安装插件:(默认安装了插件后,强度插件就启用了,关闭,需要在配置文件假如相关关闭参数) mysql>INSTALL PLUGIN validate_password SONAME 'validate_password.so'; 2.配置文件添加部分参数: [mysqld] plugin-load=validate_password.

密码强度检测效果

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

JS脚本检查密码强度

<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>无标题文档</title><script type="text/javascript"> //CharMo

四级密码强度检测

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title> 密码强度检测 </title> <meta http-equiv="Content-Type" content="text/

密码强度的js插件(完成)

效果如下图: 低: 中: 高: 页面上需要绑定的id如下: <div class="passwordtishi f12"> <font class="c666">安全程度:</font> <span id="strength_L">弱</span><span id="strength_M">中</span><span id="s