JS密码生成与强度检测完整实例(附demo源码下载)


Posted in Javascript onApril 06, 2016

本文实例讲述了JS密码生成与强度检测的方法。分享给大家供大家参考,具体如下:

1. 生成强密码

截图如下:

JS密码生成与强度检测完整实例(附demo源码下载)

相关代码如下:

function getPwd(n)
{
 var s = '';
 while(n--)
 s += String.fromCharCode(33 + Math.floor(Math.random()*(126-33)))
 document.getElementById('txt1').value = s;
}

2. 计算密码破解时间

截图如下:

JS密码生成与强度检测完整实例(附demo源码下载)

相关代码如下:

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. 密码安全检测

截图如下:

JS密码生成与强度检测完整实例(附demo源码下载)

相关代码如下:

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键状态)

截图如下:

JS密码生成与强度检测完整实例(附demo源码下载)

相关代码如下:

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);
 }
}

完整实例代码点击此处本站下载。

PS:对密码感兴趣的读者还可以参考一下本站密码相关工具:

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
js获取div高度的代码
Aug 09 Javascript
jWiard 基于JQuery的强大的向导控件介绍
Oct 28 Javascript
node.js中的querystring.unescape方法使用说明
Dec 10 Javascript
JavaScript实现按照指定长度为数字前面补零输出的方法
Mar 19 Javascript
Atitit.js的键盘按键事件捆绑and事件调度
Apr 01 Javascript
Javascript的this用法
Jan 16 Javascript
js获取隐藏元素的宽高
Feb 24 Javascript
通过npm引用的vue组件使用详解
Mar 02 Javascript
vue mint-ui学习笔记之picker的使用
Oct 11 Javascript
jQuery动态添加li标签并添加属性和绑定事件方法
Feb 24 jQuery
vue.js添加一些触摸事件以及安装fastclick的实例
Aug 28 Javascript
jQuery Ajax实现Select多级关联动态绑定数据的实例代码
Oct 26 jQuery
JS控制伪元素的方法汇总
Apr 06 #Javascript
JS实现把鼠标放到链接上出现滚动文字的方法
Apr 06 #Javascript
IE8 内存泄露(内存一直增长 )的原因及解决办法
Apr 06 #Javascript
jQuery实现HTML表格单元格的合并功能
Apr 06 #Javascript
JS中JSON对象和String之间的互转及处理技巧
Apr 06 #Javascript
js老生常谈之this,constructor ,prototype全面解析
Apr 05 #Javascript
实例详解ECMAScript5中新增的Array方法
Apr 05 #Javascript
You might like
提升PHP执行速度全攻略(上)
2006/10/09 PHP
备份mysql数据库的php代码(一个表一个文件)
2010/05/28 PHP
php 传值赋值与引用赋值的区别
2010/12/29 PHP
php中file_get_content 和curl以及fopen 效率分析
2014/09/19 PHP
php使用substr()和strpos()联合查找字符串中某一特定字符的方法
2015/05/12 PHP
php简单实现发送带附件的邮件
2015/06/10 PHP
php图像验证码生成代码
2017/06/08 PHP
php使用curl模拟多线程实现批处理功能示例
2019/07/25 PHP
JavaScript Base64编码和解码,实现URL参数传递。
2006/09/18 Javascript
jquery 插件之仿“卓越亚马逊”首页弹出菜单效果
2008/12/25 Javascript
Javascript 日期对象Date扩展方法
2009/05/30 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
2014/05/23 Javascript
基于JavaScript获取鼠标位置的各种方法
2015/12/16 Javascript
原生JS实现轮播效果+学前端的感受(防止走火入魔)
2016/08/21 Javascript
javascript this详细介绍
2016/09/19 Javascript
JavaScript制作弹出层效果
2016/12/02 Javascript
Javascript 高性能之递归,迭代,查表法详解及实例
2017/01/08 Javascript
Bootstrap的popover(弹出框)2秒后定时消失的实现代码
2017/02/27 Javascript
微信小程序实战之自定义模态弹窗(8)
2017/04/18 Javascript
iview中Select 选择器多选校验方法
2018/03/15 Javascript
深入了解Hybrid App技术的相关知识
2019/07/17 Javascript
Python使用xlrd读取Excel格式文件的方法
2015/03/10 Python
Python实现字典的遍历与排序功能示例
2017/12/23 Python
python打包生成的exe文件运行时提示缺少模块的解决方法
2018/10/31 Python
wxPython色环电阻计算器
2019/11/18 Python
Python实现图片添加文字
2019/11/26 Python
详解python 中in 的 用法
2019/12/12 Python
PyTorch的自适应池化Adaptive Pooling实例
2020/01/03 Python
python:批量统计xml中各类目标的数量案例
2020/03/10 Python
python raise的基本使用
2020/09/10 Python
大学生求职自荐信
2013/12/12 职场文书
幼儿园毕业典礼主持词
2014/03/21 职场文书
2014保险公司个人工作总结
2014/12/09 职场文书
车辆安全隐患排查制度
2015/08/05 职场文书
写作之关于描写老人的好段摘抄
2019/11/14 职场文书
JS开发前端团队展示控制器来为成员引流
2022/08/14 Javascript