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 相关文章推荐
图片自动缩小的js代码,用以防止图片撑破页面
Mar 12 Javascript
ASP.NET jQuery 实例18 通过使用jQuery validation插件校验DropDownList
Feb 03 Javascript
javascript内置对象arguments详解
Mar 16 Javascript
javascript对中文按照拼音排序代码
Aug 20 Javascript
JavaScript获取并更改input标签name属性的方法
Jul 02 Javascript
javascript实现列表切换效果
May 02 Javascript
使用jquery的jsonp如何发起跨域请求及其原理详解
Aug 17 jQuery
基于input动态模糊查询的实现方法
Dec 12 Javascript
关于vue中watch检测到不到对象属性的变化的解决方法
Feb 08 Javascript
vue组件与复用详解
Apr 08 Javascript
jQuery zTree树插件的使用教程
Aug 16 jQuery
javascript实现前端成语点击验证
Jun 24 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
通过JavaScript或PHP检测Android设备的代码
2011/03/09 PHP
php数组添加与删除单元的常用函数实例分析
2015/02/16 PHP
CodeIgniter中使用Smarty3基本配置
2015/06/29 PHP
PHP正则表达式之捕获组与非捕获组
2015/11/06 PHP
Yii核心验证器api详解
2016/11/23 PHP
PHP Include文件实例讲解
2019/02/15 PHP
js hover 定时器(实例代码)
2013/11/12 Javascript
Javascript中各种trim的实现详细解析
2013/12/10 Javascript
jquery仿百度经验滑动切换浏览效果
2015/04/14 Javascript
JS实现网页上随机产生超链接地址的方法
2015/11/09 Javascript
JS实现支持Ajax验证的表单插件
2016/03/24 Javascript
Three.js学习之Lamber材质和Phong材质
2016/08/04 Javascript
Centos7 中安装 Node.js v4.4.4
2016/11/03 Javascript
JS实战篇之收缩菜单表单布局
2016/12/10 Javascript
jQuery实现广告条滚动效果
2017/08/22 jQuery
Vue.js自定义事件的表单输入组件方法
2018/03/08 Javascript
JavaScript中为事件指定处理程序的五种方式分析
2018/07/27 Javascript
基于Vue实现图片在指定区域内移动的思路详解
2018/11/11 Javascript
Vue框架TypeScript装饰器使用指南小结
2019/02/18 Javascript
浅析JavaScript 函数柯里化
2020/09/08 Javascript
解决python3在anaconda下安装caffe失败的问题
2017/06/15 Python
Django 开发环境与生产环境的区分详解
2019/07/26 Python
python修改FTP服务器上的文件名
2019/09/11 Python
pytorch获取模型某一层参数名及参数值方式
2019/12/30 Python
新年福利来一波之Python轻松集齐五福(demo)
2020/01/20 Python
Tensorflow tf.tile()的用法实例分析
2020/05/22 Python
记一次django内存异常排查及解决方法
2020/08/07 Python
pycharm激活方法到2099年(激活流程)
2020/09/22 Python
纯html5+css3下拉导航菜单实现代码
2013/03/18 HTML / CSS
汉米尔顿手表官网:Hamilton
2020/09/13 全球购物
团日活动策划书
2014/02/01 职场文书
保护环境演讲稿
2014/05/10 职场文书
乔布斯斯坦福大学演讲稿
2014/05/23 职场文书
2015年公司中秋节致辞
2015/07/31 职场文书
2016春季小学开学寄语
2015/12/03 职场文书
JavaScript实现显示和隐藏图片
2021/04/29 Javascript