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 相关文章推荐
再次分享18个非常棒的jQuery表格插件
Apr 10 Javascript
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
Apr 26 Javascript
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
May 27 Javascript
Javascript 实现的数独解题算法网页实例
Oct 15 Javascript
跨域传值即主页面与iframe之间互相传值
Dec 09 Javascript
JS保留两位小数,多位小数的示例代码
Jan 07 Javascript
用js格式化金额可设置保留的小数位数
May 09 Javascript
javascript实现简单的html5视频播放器
May 06 Javascript
javascript中的previousSibling和nextSibling的正确用法
Sep 16 Javascript
jQuery使用$.ajax提交表单完整实例
Dec 11 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
Feb 14 Javascript
VUE-cli3使用 svg-sprite-loader
Oct 20 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错误、异常处理机制(补充)
2012/05/07 PHP
详解PHP中的PDO类
2015/07/06 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2007/02/15 Javascript
PNG背景在不同浏览器下的应用
2009/06/22 Javascript
javascript题目,重写函数让其无限相加
2012/02/15 Javascript
悬浮数字的实现案例
2014/02/19 Javascript
jQuery模拟黑客帝国矩阵效果实例
2015/06/28 Javascript
JavaScript设置表单上传时文件个数的方法
2015/08/11 Javascript
浅谈javascript的call()、apply()、bind()的用法
2016/02/21 Javascript
将form表单通过ajax实现无刷新提交的简单实例
2016/10/12 Javascript
jquery.rotate.js实现可选抽奖次数和中奖内容的转盘抽奖代码
2017/08/23 jQuery
vue.js中created方法作用
2018/03/30 Javascript
Vue中使用ElementUI使用第三方图标库iconfont的示例
2018/10/11 Javascript
JavaScript实现页面中录音功能的方法
2019/06/04 Javascript
详解package.json版本号规则
2019/08/01 Javascript
在layui中select更改后生效的方法
2019/09/05 Javascript
简单了解JavaScript弹窗实现代码
2020/05/07 Javascript
[35:44]2014 DOTA2华西杯精英邀请赛 5 24 iG VS VG
2014/05/26 DOTA
[07:39]第一届亚洲邀请赛回顾视频
2017/02/14 DOTA
如何使用python爬取csdn博客访问量
2016/02/14 Python
解析Mac OS下部署Pyhton的Django框架项目的过程
2016/05/03 Python
python用户管理系统的实例讲解
2017/12/23 Python
pandas的object对象转时间对象的方法
2018/04/11 Python
Python自动发送邮件的方法实例总结
2018/12/08 Python
python re.sub()替换正则的匹配内容方法
2019/07/22 Python
Django 反向生成url实例详解
2019/07/30 Python
python时间日期操作方法实例小结
2020/02/06 Python
Spartoo英国:欧洲最大的网上鞋店
2016/09/13 全球购物
shallow copy和deep copy的区别
2016/05/09 面试题
4s客服专员岗位职责
2013/12/01 职场文书
家长给幼儿园的表扬信
2014/01/09 职场文书
2015教师见习期工作总结
2014/12/12 职场文书
苏州园林导游词
2015/02/03 职场文书
同意报考证明
2015/06/17 职场文书
使用这 6个Vue加载动画库来减少我们网站的跳出率
2021/05/18 Vue.js
Python日志模块logging用法
2022/06/05 Python