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插件 selectToSelect使用方法
Oct 02 Javascript
JQuery下拉框应用示例介绍
Apr 23 Javascript
非常实用的12个jquery代码片段
Nov 02 Javascript
AngularJS ng-style中使用filter
Sep 21 Javascript
jquery实现(textarea)placeholder自动换行
Dec 22 Javascript
jquery表单提交带错误信息提示效果
Mar 09 Javascript
解决Vue2.0自带浏览器里无法打开的原因(兼容处理)
Jul 28 Javascript
微信小程序之发送短信倒计时功能
Aug 30 Javascript
JS实现页面跳转与刷新的方法汇总
Aug 30 Javascript
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
Apr 24 Javascript
js最全的数组的降维5种办法(小结)
Apr 28 Javascript
解决await在forEach中不起作用的问题
Feb 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
第二章 PHP入门基础之php代码写法
2011/12/30 PHP
shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
2013/07/15 PHP
yii框架通过控制台命令创建定时任务示例
2014/04/30 PHP
Ecshop 后台添加新功能栏目及管理权限设置教程
2017/11/21 PHP
详解php反序列化
2020/06/10 PHP
JS防止用户多次提交的简单代码
2013/08/01 Javascript
js解析json读取List中的实体对象示例
2014/03/11 Javascript
jQuery前端开发35个小技巧
2016/05/24 Javascript
深入探讨Vue.js组件和组件通信
2016/09/12 Javascript
你不知道的 javascript【推荐】
2017/01/08 Javascript
基于vue2框架的机器人自动回复mini-project实例代码
2017/06/13 Javascript
vue.js实现刷新当前页面的方法教程
2017/07/05 Javascript
vue如何使用 Slot 分发内容实例详解
2017/09/05 Javascript
jQuery实现切换隐藏与显示同时切换图标功能
2017/10/29 jQuery
基于IView中on-change属性的使用详解
2018/03/15 Javascript
JavaScript设计模式之装饰者模式定义与应用示例
2018/07/25 Javascript
Vue CLI 3搭建vue+vuex最全分析(推荐)
2018/09/27 Javascript
vue中根据时间戳判断对应的时间(今天 昨天 前天)
2019/12/20 Javascript
Vue Elenent实现表格相同数据列合并
2020/11/30 Vue.js
Python有序查找算法之二分法实例分析
2017/12/11 Python
读取json格式为DataFrame(可转为.csv)的实例讲解
2018/06/05 Python
Python实现矩阵相乘的三种方法小结
2018/07/26 Python
Python学习笔记之迭代器和生成器用法实例详解
2019/08/08 Python
查看keras的默认backend实现方式
2020/06/19 Python
金蝶的一道SQL笔试题
2012/12/18 面试题
竞聘副主任科员演讲稿
2014/01/11 职场文书
退伍老兵事迹材料
2014/01/31 职场文书
供用电专业求职信
2014/07/07 职场文书
暑期政治学习心得体会
2014/09/02 职场文书
化工实习心得体会
2014/09/09 职场文书
就业意向书范本
2015/05/11 职场文书
毕业设计致谢语
2015/05/14 职场文书
幼儿园体操比赛口号
2015/12/25 职场文书
人力资源部工作计划
2019/05/14 职场文书
pytorch model.cuda()花费时间很长的解决
2021/06/01 Python
SpringBoot整合JWT的入门指南
2021/06/29 Java/Android