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 相关文章推荐
jQuery登陆判断简单实现代码
Apr 21 Javascript
JS实现div居中示例
Apr 17 Javascript
jquery+json实现数据二级联动的方法
Nov 28 Javascript
直接拿来用的页面跳转进度条JS实现
Jan 06 Javascript
全面解析JavaScript中“&amp;&amp;”和“||”操作符(总结篇)
Jul 18 Javascript
JavaScript字符串对象
Jan 14 Javascript
node.js操作MongoDB的实例详解
Oct 11 Javascript
如何在vue里面优雅的解决跨域(路由冲突问题)
Jan 20 Javascript
TypeScript开发Node.js程序的方法
Apr 30 Javascript
详解小程序用户登录状态检查与更新实例
May 15 Javascript
js变量值传到php过程详解 将php解析成数据
Jun 26 Javascript
js实现无限瀑布流实例方法
Sep 16 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用户指南-cookies部分
2006/10/09 PHP
Codeigniter注册登录代码示例
2014/06/12 PHP
ThinkPHP实现事务回滚示例代码
2014/06/23 PHP
php+ajax实时刷新简单实例
2015/02/25 PHP
thinkphp多表查询两表有重复相同字段的完美解决方法
2016/09/22 PHP
laravel model模型定义实现开启自动管理时间created_at,updated_at
2019/10/17 PHP
基于jquery.Jcrop的头像编辑器
2010/03/01 Javascript
JQuery中判断一个元素下面是否有内容或者有某个标签的判断代码
2012/02/02 Javascript
JavaScript 参数中的数组展开 [译]
2012/09/21 Javascript
处理文本部分内容的TextRange对象应用实例
2014/07/29 Javascript
Javascript中的Callback方法浅析
2015/03/15 Javascript
jquery图片切换插件
2015/03/16 Javascript
JavaScript+CSS实现的可折叠二级菜单实例
2016/02/29 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
2016/04/18 Javascript
jQuery代码实现对话框右上角菜单带关闭×
2016/05/03 Javascript
AngularJS入门教程之迭代器过滤详解
2016/08/18 Javascript
JS弹出窗口的运用与技巧大全
2016/11/01 Javascript
在React中如何优雅的处理事件响应详解
2017/07/24 Javascript
解决vue 按钮多次点击重复提交数据问题
2018/05/10 Javascript
React中使用UMEditor的方法示例
2019/12/27 Javascript
[00:57]英雄,你的补给到了!
2020/11/13 DOTA
解决python字典对值(值为列表)赋值出现重复的问题
2019/01/20 Python
使用pycharm在本地开发并实时同步到服务器
2019/08/02 Python
python 解决print数组/矩阵无法完整输出的问题
2020/02/19 Python
浅谈Python 参数与变量
2020/06/20 Python
教师实习的自我鉴定
2013/10/26 职场文书
党支部书记岗位责任制
2014/02/11 职场文书
个人培训自我鉴定
2014/03/28 职场文书
活动总结报告格式
2014/05/09 职场文书
慈善捐赠倡议书
2014/08/30 职场文书
单位员工收入证明样本
2014/10/09 职场文书
离婚起诉状范本
2015/05/19 职场文书
2015-2016年小学教导工作总结
2015/07/21 职场文书
上班旷工检讨书
2015/08/15 职场文书
超详细教你怎么升级Mysql的版本
2021/05/19 MySQL
教你做个可爱的css滑动导航条
2021/06/15 HTML / CSS