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 相关文章推荐
javascript定时变换图片实例代码
Mar 17 Javascript
C#中使用迭代器处理等待任务
Jul 13 Javascript
JavaScript知识点总结(十)之this关键字
May 31 Javascript
浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法
Nov 29 Javascript
微信小程序 开发之全局配置
May 05 Javascript
微信小程序 蓝牙的实现实例代码
Jun 27 Javascript
JS获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天的示例代码
Dec 05 Javascript
微信小程序发布新版本时自动提示用户更新的方法
Jun 07 Javascript
JavaScript HTML DOM 元素 (节点)新增,编辑,删除操作实例分析
Mar 02 Javascript
JS中作用域以及变量范围分析
Jul 18 Javascript
原生js实现弹幕效果
Nov 29 Javascript
原生JavaScript实现幻灯片效果
Feb 19 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
一个程序下载的管理程序(一)
2006/10/09 PHP
php获取网页中图片、DIV内容的简单方法
2014/06/19 PHP
Laravel相关的一些故障解决
2020/08/19 PHP
鼠标图片振动代码
2006/07/06 Javascript
javascript 广告后加载,加载完页面再加载广告
2010/11/25 Javascript
JavaScript建立一个语法高亮输入框实现思路
2013/02/26 Javascript
原生JS和jQuery版实现文件上传功能
2016/04/18 Javascript
个人网站留言页面(前端jQuery编写、后台php读写MySQL)
2016/05/03 Javascript
JS实现图片局部放大或缩小的方法
2016/08/20 Javascript
BootStrap table表格插件自适应固定表头(超好用)
2016/08/24 Javascript
解析AngularJS中get请求URL出现的跨域问题
2016/12/01 Javascript
Nodejs搭建wss服务器教程
2017/05/24 NodeJs
Nodejs 和 Electron ubuntu下快速安装过程
2018/05/04 NodeJs
深入了解js原型模式
2019/05/30 Javascript
ES6 Object.assign()的用法及其使用
2020/01/18 Javascript
elementui更改el-dialog关闭按钮的图标d的示例代码
2020/08/04 Javascript
[01:01:52]完美世界DOTA2联赛PWL S2 GXR vs Magma 第二场 11.25
2020/11/26 DOTA
python更新列表的方法
2015/07/28 Python
Python 编程速成(推荐)
2019/04/15 Python
Django框架序列化与反序列化操作详解
2019/11/01 Python
matlab灰度图像调整及imadjust函数的用法详解
2020/02/27 Python
使用 Python 遍历目录树的方法
2020/02/29 Python
Python pymsql模块的使用
2020/09/07 Python
python实现三壶谜题的示例详解
2020/11/02 Python
Python之多进程与多线程的使用
2021/02/23 Python
使用CSS3的::selection改变选中文本颜色的方法
2015/09/29 HTML / CSS
html5中canvas图表实现柱状图的示例
2017/11/13 HTML / CSS
荷兰鞋类购物网站:Donelli
2019/05/24 全球购物
同学聚会欢迎辞
2014/01/14 职场文书
员工培训邀请函
2014/02/02 职场文书
学校食品安全责任书
2015/01/29 职场文书
OpenCV-Python实现图像平滑处理操作
2021/06/08 Python
python中取整数的几种方法
2021/11/07 Python
一次项目中Thinkphp绕过禁用函数的实战记录
2021/11/17 PHP
Win7/8.1用户可以免费升级到Windows 11系统吗?
2021/11/21 数码科技
python中pd.cut()与pd.qcut()的对比及示例
2022/06/16 Python