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 相关文章推荐
Jqyery中同等与js中windows.onload的应用
May 10 Javascript
jquery js 重置表单 reset()具体实现代码
Aug 05 Javascript
两种不同的方法实现js对checkbox进行全选和反选
May 13 Javascript
jQuery动态修改超链接地址的方法
Feb 13 Javascript
Node.js模块封装及使用方法
Mar 06 Javascript
基于jquery实现ajax无刷新评论
Aug 19 Javascript
D3.js中强制异步文件读取同步的几种方法
Feb 06 Javascript
利用node.js搭建简单web服务器的方法教程
Feb 20 Javascript
JS分页的实现(同步与异步)
Sep 16 Javascript
JavaScript惰性载入函数实例分析
Mar 27 Javascript
Moment.js实现多个同时倒计时
Aug 26 Javascript
uniapp 仿微信的右边下拉选择弹出框的实现代码
Jul 12 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
短波问题解答
2021/02/28 无线电
espresso double下 咖啡粉超细时 饼压力对咖啡的影响
2021/03/03 冲泡冲煮
浅谈php正则表达式中的非贪婪模式匹配的使用
2014/11/25 PHP
php从csv文件读取数据并输出到网页的方法
2015/03/14 PHP
[原创]php简单防盗链验证实现方法
2016/07/09 PHP
PHP对象实例化单例方法
2017/01/19 PHP
php实现页面纯静态的实例代码
2017/06/21 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
Yii框架连表查询操作示例
2019/09/06 PHP
动态刷新 dorado树的js代码
2009/06/12 Javascript
多个checkbox被选中时如何判断是否有自己想要的
2014/09/22 Javascript
jQuery UI库中dialog对话框功能使用全解析
2016/04/23 Javascript
BootStrap智能表单实战系列(四)表单布局介绍
2016/06/13 Javascript
简单模拟node.js中require的加载机制
2016/10/27 Javascript
深入理解Angular中的依赖注入
2017/06/26 Javascript
jquery实现下拉菜单的手风琴效果
2017/07/23 jQuery
checkbox:click事件触发span元素内容改变的方法
2017/09/11 Javascript
vue3.0中setup使用(两种用法)
2020/12/02 Vue.js
[10:04]国际邀请赛采访专栏:DK.Farseer,mouz.Black^,采访员Josh专访
2013/08/05 DOTA
python写的一个squid访问日志分析的小程序
2014/09/17 Python
Python中使用第三方库xlutils来追加写入Excel文件示例
2015/04/05 Python
Python单元测试框架unittest简明使用实例
2015/04/13 Python
在Linux中通过Python脚本访问mdb数据库的方法
2015/05/06 Python
numpy给array增加维度np.newaxis的实例
2018/11/01 Python
python创建学生成绩管理系统
2019/11/22 Python
Python实现检测文件的MD5值来查找重复文件案例
2020/03/12 Python
linux面试题参考答案(9)
2015/01/07 面试题
介绍一下Python下range()函数的用法
2013/11/07 面试题
计算机通信工程专业毕业生推荐信
2013/12/24 职场文书
大学生活动总结怎么写
2014/04/29 职场文书
2014年教师批评与自我批评思想汇报
2014/09/20 职场文书
公司授权委托书
2014/10/17 职场文书
2014年驻村干部工作总结
2014/11/17 职场文书
实习计划书范文
2015/01/16 职场文书
演讲稿之开卷有益
2019/08/07 职场文书
python 解决微分方程的操作(数值解法)
2021/05/26 Python