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 相关文章推荐
IE中jscript/javascript的条件编译
Sep 07 Javascript
JavaScript CSS修改学习第三章 修改样式表
Feb 19 Javascript
jquery获取input的value问题说明
Aug 19 Javascript
js 定时器setTimeout无法调用局部变量的解决办法
Nov 28 Javascript
jQuery实现Flash效果上下翻动的中英文导航菜单代码
Sep 22 Javascript
深入理解JavaScript程序中内存泄漏
Mar 17 Javascript
javascript实现抽奖程序的简单实例
Jun 07 Javascript
jQuery购物网页经典制作案例
Aug 19 Javascript
JS温故而知新之变量提升和时间死区
Jan 27 Javascript
PHP实现基于Redis的MessageQueue队列封装操作示例
Feb 02 Javascript
解决layer.confirm选择完之后消息框不消失的问题
Sep 16 Javascript
浅谈javascript如何获取文件后缀名
Aug 07 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视频拍照上传头像功能实现代码分享
2015/10/08 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
PHP+iframe模拟Ajax上传文件功能示例
2019/07/02 PHP
js中的eventType事件及其浏览器支持性介绍
2013/11/29 Javascript
javascript里绝对用的上的字符分割函数总结
2014/07/31 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
2015/05/03 Javascript
bootstarp modal框居中显示的实现代码
2017/02/18 Javascript
详解vue与后端数据交互(ajax):vue-resource
2017/03/16 Javascript
jQuery实现表格隔行换色
2018/09/01 jQuery
JS实现的雪花飘落特效示例
2019/12/03 Javascript
javascript设计模式之迭代器模式
2020/01/30 Javascript
原生JS实现烟花效果
2020/03/10 Javascript
es6函数之严格模式用法实例分析
2020/03/17 Javascript
Vue-router中hash模式与history模式的区别详解
2020/12/15 Vue.js
[49:18]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 OG vs TNC
2018/04/01 DOTA
python getopt 参数处理小示例
2009/06/09 Python
python实现自动登录人人网并采集信息的方法
2015/06/28 Python
python实现数据预处理之填充缺失值的示例
2017/12/22 Python
Python登录并获取CSDN博客所有文章列表代码实例
2017/12/28 Python
Python实现七彩蟒蛇绘制实例代码
2018/01/16 Python
Python装饰器用法实例总结
2018/05/26 Python
python实现画五角星和螺旋线的示例
2019/01/20 Python
Tensorflow 实现释放内存
2020/02/03 Python
python 线性回归分析模型检验标准--拟合优度详解
2020/02/24 Python
详解python命令提示符窗口下如何运行python脚本
2020/09/11 Python
一道SQL面试题
2012/12/31 面试题
超市仓管员岗位职责
2014/04/07 职场文书
2015年五四青年节演讲稿
2015/03/18 职场文书
会计试用期工作总结2015
2015/05/28 职场文书
活着观后感
2015/06/03 职场文书
2016应届毕业生就业指导课心得体会
2016/01/15 职场文书
使用HTML+Css+transform实现3D导航栏的示例代码
2021/03/31 HTML / CSS
python基于turtle绘制几何图形
2021/06/15 Python
浅谈Python数学建模之线性规划
2021/06/23 Python
Opencv实现二维直方图的计算及绘制
2021/07/21 Python
Vue ECharts实现机舱座位选择展示功能
2022/05/15 Vue.js