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 相关文章推荐
Asp.net下利用Jquery Ajax实现用户注册检测(验证用户名是否存)
Sep 12 Javascript
关于图片按比例自适应缩放的js代码
Oct 30 Javascript
jquery动画4.升级版遮罩效果的图片走廊--带自动运行效果
Aug 24 Javascript
js的Boolean对象初始值示例
Mar 04 Javascript
javascript实现判断鼠标的状态
Jul 10 Javascript
Node.js实现数据推送
Apr 14 Javascript
SVG描边动画
Feb 23 Javascript
JS 实现分页打印功能
May 16 Javascript
解决vue接口数据赋值给data没有反应的问题
Aug 27 Javascript
详解使用React制作一个模态框
Mar 14 Javascript
微信小程序入口场景的问题集合与相关解决方法
Jun 26 Javascript
在vue中封装方法以及多处引用该方法详解
Aug 14 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程序员应具有的7种能力小结
2014/11/27 PHP
Sublime里直接运行PHP配置方法
2014/11/28 PHP
PHP统计数值数组中出现频率最多的10个数字的方法
2015/04/20 PHP
修复ShopNC使用QQ 互联时提示100010 错误
2015/11/08 PHP
Yii输入正确验证码却验证失败的解决方法
2017/06/06 PHP
stripos函数知识点实例分享
2019/02/11 PHP
jQuery 研究心得 取得属性的值
2007/11/30 Javascript
Jquery实现显示和隐藏的4种简单方式
2013/08/28 Javascript
我的Node.js学习之路(一)
2014/07/06 Javascript
多种jQuery绑定事件的实现方式
2016/06/13 Javascript
jQuery实现的选择商品飞入文本框动画效果完整实例
2016/08/10 Javascript
jQuery实现的小图列表,大图展示效果幻灯片示例
2016/10/25 Javascript
es6学习笔记之Async函数的使用示例
2017/05/11 Javascript
JS实现基于拖拽改变物体大小的方法
2018/01/23 Javascript
vue.js 使用axios实现下载功能的示例
2018/03/05 Javascript
详解解决使用axios发送json后台接收不到的问题
2018/06/27 Javascript
Vue引入sass并配置全局变量的方法
2018/06/27 Javascript
浅析JS中什么是自定义react数据验证组件
2018/10/19 Javascript
Vue实现多标签选择器
2019/11/28 Javascript
Nodejs文件上传、监听上传进度的代码
2020/03/27 NodeJs
Python中比较特别的除法运算和幂运算介绍
2015/04/05 Python
python类继承与子类实例初始化用法分析
2015/04/17 Python
Python随机生成信用卡卡号的实现方法
2015/05/14 Python
Python创建普通菜单示例【基于win32ui模块】
2018/05/09 Python
学习python可以干什么
2019/02/26 Python
从pandas一个单元格的字符串中提取字符串方式
2019/12/17 Python
python实现提取str字符串/json中多级目录下的某个值
2020/02/27 Python
基于css3实现漂亮便签样式
2013/03/18 HTML / CSS
英国手机零售商:Metrofone
2019/03/18 全球购物
2014年母亲节寄语
2014/05/07 职场文书
工地安全标语
2014/06/07 职场文书
关爱留守儿童标语
2014/06/18 职场文书
2015年重阳节主持词
2015/07/04 职场文书
导游词范文之颐和园/重庆/云台山
2019/09/10 职场文书
MySql分区类型及创建分区的方法
2022/04/13 MySQL
html原生table实现合并单元格以及合并表头的示例代码
2023/05/07 HTML / CSS