C++实现密码强度测试
最近在博客中看到许多用js写的密码强度检测,我觉得挺有意思的,所以呢我打算自己也写个来玩玩,最可悲的是我还没学js,当然这不重要,所以呢打算用C++来写一个密码强度检测,这里我来给大家说说用JS写的和用C++写的不同之处
JS写的密码强度检测:当你输入一串>=6 位数的时候 他后面会自动弹出密码的强度 ,还有你再继续输入然后他后面的密码强度会更换 (当然我也尝试解决过这个问题,写出来就一直只能输入6位数,由于我技术有限,如果大家自己能写出来的话可以去试试);
C++写的密码强度检测:当你输入一串>=6位数的时候 你要按下回车才能将字符串读入内存中,这样相比往往更JS还是有一定的差距的。
接下来我们就来看下这密码强度检测的规则吧;
* 1) 任何在1-6之间的字符的组合,弱;例如: win
* 2) 任何字符数的两类字符组合,中; 例如: win123
* 3) 12位字符数以下的三类或四类字符组合,强; 例如: win123abcABC
* 4) 12位字符数以上的三类或四类字符组合,非常好。 例如:win123abcABC!
思路:写个子函数然后遍历查找字符串大写和小写还有数字等其他字符是否存在,这里记住了如果存在某个字符只计数一次。然后再返回给主函数,主函数主要判断密码又几类字符组成然后再按相应的数输出密码强度;
下面是代码:
#include <iostream>
#include <cstring>
#include <cctype>
using namespace std;
int fun(char password[]);
int main(int argc, char* argv[])
{
int i;
char password[];
stop:cout<<"Password:";gets(password);
while(strlen(password)>=&&strlen(password)<=){
switch(fun(password))
{
case :cout<<"弱 ★"<<endl;break;
case :cout<<"中 ★ ★"<<endl;break;
case :cout<<"强 ★ ★ ★"<<endl;break;
case :cout<<"非常好 ★ ★ ★ ★"<<endl;break;
}cout<< "Password:";gets(password);
}
cout<<"密码最少6~16位 请重新输入:"<<endl;goto stop;
return ;
}
int fun(char password[])
{
int i,count=,a=,b=,c=; for(i=;i<strlen(password);i++)
if(a&&islower(password[i])) count++,a=;
else if(b&&isupper(password[i])) count++,b=;
else if(c&&isdigit(password[i])) count++,c=;
else if(!islower(password[i])&&!isupper(password[i])&&!isdigit(password[i])) count++;
return count;
}
最后附上一张运行结果:
PS:如果大家还有更好的思路也可以自己写写试试,最后谢谢大家的阅读。
C++实现密码强度测试的更多相关文章
- 一个玩具程序——测试密码强度(pure C)
替人写的C语言作业… 介绍: 程序名称:密码强度检测程序 注释风格:doxygen 测试环境:linux3.6, gcc4.7window7, vs2012 已知问题:1. 算法与参考链接不一致,结果 ...
- 如何在nopcommerce3.3注册页面添加密码强度检查仪?
我刚刚完成了nopCommerce注册页面的密码强度检查仪,因为我觉得在电子商务交易平台,安全问题是非常重要的.在注册页面有必要添加一个密码强度检测仪,以便通知用户他们的密码是否足够强大.今天,大多数 ...
- javascript密码强度验证!
//CharMode函数 //测试某个字符是属于哪一类 function CharMode(iN) { if (iN>=48 && iN <=57) //数字 return ...
- js动态判断密码强度&&实用的 jQuery 代码片段
// 网上拷贝的代码,效果不太好需要自己调整<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &q ...
- 密码强度的js插件(完成)
效果如下图: 低:
- Js判断密码强度并显示提示信息
用javascipt实现的Ajax判断密码强弱的功能,大多数有用户注册功能的网站,都会有这么一个功能,作为WEB程序员,应该会写这种小模块哦,不懂的就看下这个例子,觉得挺简单,当初帮助了不少人学会了密 ...
- mysql 5.6密码强度插件使用
在mysql 5.6对密码的强度进行了加强,推出了validate_password 插件.支持密码的强度要求. 此插件要求版本:5.6.6 以上版本安装方式: 1.安装插件:(默认安装了插件后,强度 ...
- javascript 检测密码强度
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- js实现密码强度验证
<html> <head> <meta http-equiv="content-type" content="text/html" ...
随机推荐
- [ext4]09 磁盘布局 - superblock备份机制
如果sparse_super特性flag被设置(即开启了sparse_super特性),那么super_block和组描述符的副本只会保存在group索引为0或3.5.7的整数幂. 如果没有设置spa ...
- C++中发声函数Beep详解
By zhcs 以前,我听过一个神犇用C++函数做的音乐,当时的心里就十分激动:哇,好厉害啊,好神啊. 这次,我终于通过自己无助的盲目的摸索.研究,写出了这篇文章(此时我的内心是鸡冻的233) 下面是 ...
- hdu4099 Revenge of Fibonacci 字典树
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4099 思想很容易想到 就是预处理出前10w个的fib数,然后建树查询 建树时只用前40位即可,所以在计 ...
- 模板方法模式(Tempalte Method Pattern)
模板方法模式是类的行为模式.准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑.不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有 ...
- jdk动态代理原理
http://www.cnblogs.com/MOBIN/p/5597215.html 请先查看这边博文 此文主要是在上篇博文的基础之上,宏观的理一下思路,因为之前本人看了上篇之后云里雾里(是本人 ...
- Item 27: 明白什么时候选择重载,什么时候选择universal引用
本文翻译自<effective modern C++>,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 Item 26已经解释了,不管是对全局函数还是成员 ...
- js实用方法记录-简单cookie操作
js实用方法记录-简单cookie操作 设置cookie:setCookie(名称,值,保存时间,保存域); 获取cookie:setCookie(名称); 移除cookie:setCookie(名称 ...
- Hadoop中MapReduce作业流程图
MapReduce的流程分为11个步骤,4个实体 1.客户端:编写MapReduce的代码,配置作业,提交作业 2.JobTracker:初始化作业,分配作业,与TaskTracker通信,协调整个作 ...
- 用java读写ini配置文件
本文转载地址: http://www.blogjava.net/silvernapoleon/archive/2006/08/07/62222.html import java.io.Bu ...
- Struts2 设置global timer
设置全局的timer需要在web.xml中添加servlet, 并设置load-on-startup 为 1, 然后在servlet的init()中开启timer, 具体代码如下: 1. web.xm ...