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 相关文章推荐
JQuery中的ready函数冲突的解决方法
May 17 Javascript
精心挑选的15个jQuery下拉菜单制作教程
Jun 15 Javascript
javascript对中文按照拼音排序代码
Aug 20 Javascript
js全选按钮的实现方法
Nov 17 Javascript
简介BootStrap model弹出框的使用
Apr 27 Javascript
使用jquery获取url以及jquery获取url参数的实现方法
May 25 Javascript
js阻止冒泡和默认事件(默认行为)详解
Oct 20 Javascript
使用ionic播放轮询广告的实现方法(必看)
Apr 24 Javascript
vue scroller返回页面记住滚动位置的实例代码
Jan 29 Javascript
vue iview组件表格 render函数的使用方法详解
Mar 15 Javascript
在小程序中使用canvas的方法示例
Sep 17 Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
Jul 25 Javascript
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
操作Oracle的php类
2006/10/09 PHP
php设计模式之命令模式的应用详解
2013/05/21 PHP
详解PHP队列的实现
2019/03/14 PHP
基于jQuery替换table中的内容并显示进度条的代码
2011/08/02 Javascript
javascript学习笔记(五) Array 数组类型介绍
2012/06/19 Javascript
jquery.boxy弹出框(后隔N秒后自动隐藏/自动跳转)
2013/01/15 Javascript
jQuery弹出(alert)select选择的值
2013/04/21 Javascript
Jquery获取和修改img的src值的方法
2014/02/17 Javascript
JavaScript及jquey实现多个数组的合并操作
2014/09/06 Javascript
jquery中push()的用法(数组添加元素)
2014/11/25 Javascript
jQuery中is()方法用法实例
2015/01/06 Javascript
js实现点击文本框显示日期选择器特效代码分享
2020/05/21 Javascript
实例教学如何写vue插件
2017/11/30 Javascript
bootstrap fileinput插件实现预览上传照片功能
2018/01/23 Javascript
用vue写一个仿简书的轮播图的示例代码
2018/03/13 Javascript
关于vue编译版本引入的问题的解决
2018/09/17 Javascript
Node.js的进程管理的深入理解
2019/01/09 Javascript
vue页面跳转实现页面缓存操作
2020/07/22 Javascript
Vue如何实现验证码输入交互
2020/12/07 Vue.js
[01:23:24]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第三场 2月7日
2021/03/11 DOTA
python翻译软件实现代码(使用google api完成)
2013/11/26 Python
对TensorFlow中的variables_to_restore函数详解
2018/07/30 Python
Python字符串中添加、插入特定字符的方法
2019/09/10 Python
Django ORM实现按天获取数据去重求和例子
2020/05/18 Python
浅谈Python 命令行参数argparse写入图片路径操作
2020/07/12 Python
Python类class参数self原理解析
2020/11/19 Python
迷你唐卡软皮鞋:Minnetonka Moccasin
2018/05/01 全球购物
Clarks其乐鞋荷兰官网:Clarks荷兰
2019/07/05 全球购物
Final类有什么特点
2012/04/25 面试题
介绍一下你对SOA的认识
2016/04/24 面试题
创建文明城市标语
2014/06/16 职场文书
2014物价局民主生活会对照检查材料思想汇报
2014/09/24 职场文书
流动人口婚育证明
2014/10/19 职场文书
党校毕业个人总结
2015/02/28 职场文书
2016大学优秀学生干部事迹材料
2016/03/01 职场文书
MySQL 数据 data 基本操作
2022/05/04 MySQL