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" ...
随机推荐
- 线下市场,选择微信小程序从未显得如此重要
2017 年 1 月 9 日,小程序正式上线,到今日,3 月 8 号,这个新产品面世刚好满两个月.小程序刚推出便受到全球关注,腾讯股价当天即创逾一个月高位,但关注度先是急速上涨,不久便迅速降温,甚至在 ...
- 在线恶意软件和URL分析集成框架 – MalSub
malsub是一个基于Python 3.6.x的框架,它的设计遵循了当前最流行的互联网软件架构RESTful架构,并通过其RESTful API应用程序编程接口(API),封装了多个在线恶意软件和UR ...
- 最简单bat教程
请移到此处查看 http://www.cnblogs.com/SunShineYPH/archive/2011/12/13/2285570.html
- arcgis for javascript 之 clone()问题小计
情景再现: 用户点击一个featurelayer的图斑,(属性信息从mysql中获取),同时高亮此地块,点击一下个地块时候,取消高亮.(请忽略跨域造成的图标错误,jetty试了好久不能跨域· ...
- java-cef嵌入基于Chrome内核浏览器,做页面爬虫(可以尽在ajax异步请求数据)
1 CentOS 7.0 上安装和配置 VNC 服务器 2.1 2.1.1 首先,我们需要一个可用的桌面环境(X-Window),如果没有的话要先安装一个. 注意:以下命令必须以 root 权限运行. ...
- 智能指针剖析(上)std::auto_ptr与boost::scoped_ptr
1. 引入 C++语言中的动态内存分配没有自动回收机制,动态开辟的空间需要用户自己来维护,在出函数作用域或者程序正常退出前必须释放掉. 即程序员每次 new 出来的内存都要手动 delete,否则会造 ...
- js中addEventListener第三个参数涉及到的事件捕获与冒泡
js中,我们可以给一个dom对象添加监听事件,函数就是 addEventListener("click",function(){},true); 很容易理解,第一个参数是事件类型, ...
- Linux防火墙的关闭和开启
1) 重启后生效 开启: chkconfig iptables on 关闭: chkconfig iptables off 2) 即时生效,重启后失效 开启: service iptables sta ...
- myeclipse10.7安装git插件
如果想把github上的一些开源项目导入到myeclipse中,一种方法是从github网站上将开源项目下载下来,另一种是使用myeclipse的egit插件直接从github网站上down下来,下面 ...
- RowSet的使用
ResultSet是使用Jdbc编程的人入门和常用的操作数据库的类,自 JDK1.4开始,易于使用RowSet接口被引入.RowSet 接口扩展了标准java.sql.ResultSet接口.RowS ...