JS密码生成与强度检测完整实例(附demo源码下载)
作者:xiao张 发布时间:2024-04-25 13:13:07
标签:JS,密码生成,密码强度检测
本文实例讲述了JS密码生成与强度检测的方法。分享给大家供大家参考,具体如下:
1. 生成强密码
截图如下:
相关代码如下:
function getPwd(n)
{
var s = '';
while(n--)
s += String.fromCharCode(33 + Math.floor(Math.random()*(126-33)))
document.getElementById('txt1').value = s;
}
2. 计算密码破解时间
截图如下:
相关代码如下:
function getTime()
{
var str = '预计破解用时:';
var selChar = document.getElementById('selChar');
var txtPwdLen = document.getElementById('txtPwdLen');
var num = Math.pow(parseInt(selChar.value), parseInt(txtPwdLen.value));
str += formatTime(num / (1024*1024*1024*2.4*2));
document.getElementById('span2').innerHTML = str;
}
function formatTime(s)
{
var str = '';
if(s<1)return '小于1秒!';
s = Math.floor(s);
if(s >= 1) str = s % 60 + '秒' + str;
s = Math.floor(s / 60);
if(s >= 1) str = s % 60 + '分' + str;
s = Math.floor(s / 60);
if(s >= 1) str = s % 24 + '时' + str;
s = Math.floor(s / 24);
if(s >= 1) str = s + '天' + str;
return str;
}
3. 密码安全检测
截图如下:
相关代码如下:
function showPwd()
{
var p = document.getElementById('txt2').value;
if(p.length < 4)
{
showError('密码至少4位!');
return;
}
var o = checkPwd(p);
if(o.isSame)
{
showError('密码为重复字符!');
return;
}
for(var i=0; i<arrPwd.length; i++)
{
if(arrPwd[i] == p || arrPwd[i].indexOf(p) == 0)
{
showError('密码为100大常用密码!');
return;
}
}
var year = parseInt(p.substr(0,4));
if(!isNaN(year) && year>1900 && year<2100)
{
var month = parseInt(p.substr(4,2));
if(!isNaN(month) && month>0 && month<13)
{
var day = parseInt(p.substr(6,2));
if(!isNaN(day) && day>0 && day<32)
{
showError('不要使用日期作为密码!');
return;
}
}
}
var hasUpper = false;
var hasLow = false;
var hasNum = false;
var hasOther = false;
for(var i=0; i<p.length; i++)
{
var c = p.charCodeAt(i);
if(c>=65&&c<=90)hasUpper=true;
else if(c>=97&&c<=122)hasLow=true;
else if(c>=48&&c<=57)hasNum=true;
else hasOther=true;
}
var pwdNum = 0;
if(hasUpper)pwdNum+=26;
if(hasLow)pwdNum+=26;
if(hasNum)pwdNum+=10;
if(hasOther)pwdNum+=32;
var num = Math.pow(pwdNum, p.length);
var str = '密码长度:' + p.length + ' 强度:' + pwdNum + ' 预计破解用时:' + formatTime(num / (1024*1024*1024*2.4*2));
var span1 = document.getElementById('span1');
span1.style.color = 'blue';
span1.innerHTML = str;
}
4. 检测键盘是否大写锁定(Caps Lock键状态)
截图如下:
相关代码如下:
var $lock = false;
function checkCapsLock(fn)
{
document.documentElement.onkeypress = function(e)
{
var e = e || event;
var k = e.keyCode || e.which;
var s = e.shiftKey || (k == 16) || false;
if(k>=65&&k<=90)$lock=!s;
if(k>=97&&k<=122)$lock=s;
fn($lock);
}
document.documentElement.onkeyup = function(e)
{
var e = e || event;
var k = e.keyCode || e.which;
if(k==20)$lock = !$lock;
fn($lock);
}
}
完整实例代码点击此处本站下载。
希望本文所述对大家JavaScript程序设计有所帮助。
0
投稿
猜你喜欢
- 最近在学习python网络编程这一块,在写简单的socket通信代码时,遇到了struct这个模块的使用,当时不太清楚这到底有和作用,后来查
- <script type="text/javascript"> //那种方式移动 var choMove =
- 一、说明 numpy.ufunc是什么函数?答
- 把下面SQL里的SELECT单独执行,没有问题,但是用来CREATE VIEW 就报错了.CREATE OR REPLA
- 背景前几天在MySql上做分页时,看到有博文说使用 limit 0,10 方式分页会有丢数据问题,有人又说不会,于是想自己测试一下。测试时没
- 本文实例为大家分享了PyQt5实现简易计算器的具体代码,供大家参考,具体内容如下效果图: 界面代码calc_interface.py# -*
- 如何让Activiti-Explorer使用sql server数据库从官网下载的Activiti-explorer的war文件内部默认是使
- 一、安装对应包在Pycharm的Terminal终端中输入pip install virtualenv,创建一个引入新的虚拟环境的条件。二、
- 从这次开始,我会由简单到困难(其实也不会困难到哪里去)讲几个例程,每一个例程都是我自己写(或者修改,那样的话我会提供原始出处)的,都具有一定
- 前言最近在学习微信小程序,在学习的过程中,有很多好玩的 API,经常点外卖的同学可能在小程序中遇到过,比如:某团、某了么都是有显示当前用户位
- 描述Python strip() 方法用于移除字符串头尾指定的字符(默认为空格)。语法strip()方法语法:str.strip([char
- 1 基本信息- 模块主页:[github]- 类型:#第三方库2 安装方法pip install pythonping3 一般使用from
- 当我们在使用Pycharm时,总是会建立多个项目文件,但是分别打开每个项目文件会很麻烦,接下来看在Project Files下如何创建多个项
- Python初学者小游戏:猜数字游戏逻辑:电脑随机生成一个数字,然后玩家猜数字,电脑提示猜的数字大了还是小了,供玩家缩小数字范围,达到既定次
- DROP PRIMAY DEY用于取消主索引。注释:在MySQL较早的版本中,如果没有主索引,则DROP PRIMARY KEY会取消表中的
- 场景当我提交了本次修改到本地和远程分支后,发现我本次提交还少了一些修改内容,或者说本次修改是完全错误的,然而也push到远程仓库去了。如何回
- 如何在Access数据库中立即得到所插入记录的自动编号?首先,我们要保证获得记录集的方式支持bookmark属性,如在1、3插入一条有自动编
- 详细参考:https://gitee.com/copperpeas/uniapp-paymentuniapp-payment介绍uniapp
- Pandas中Series和DataFrame的两种数据类型中都有nunique()和unique()方法。这两个方法作用很简单,都是求Se
- 应用 MySQL 时,会遇到不能创建函数的情况。出现如下错误信息:ERROR 1418 : This function has none o