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 相关文章推荐
鼠标图片振动代码
Jul 06 Javascript
extjs DataReader、JsonReader、XmlReader的构造方法
Nov 07 Javascript
jquery each()源代码
Feb 14 Javascript
jQuery 限制输入字符串长度
Jun 20 Javascript
ionic实现滑动的三种方式
Aug 27 Javascript
JavaScript实现三级联动菜单实例代码
Jun 26 Javascript
react实现一个优雅的图片占位模块组件详解
Oct 30 Javascript
vue2.0父子组件间传递数据的方法
Aug 16 Javascript
使用webpack将ES6转化ES5的实现方法
Oct 13 Javascript
JavaScript实现PC端四格密码输入框功能
Feb 19 Javascript
JS Generator 函数的含义与用法实例总结
Apr 08 Javascript
解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)
Oct 27 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使用smtp发送支持附件的邮件示例
2014/04/13 PHP
一个PHP的ZIP压缩类分享
2014/05/04 PHP
Yii Framework框架获取分类下面的所有子类方法
2014/06/20 PHP
PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题
2015/11/30 PHP
thinkPHP实现多字段模糊匹配查询的方法
2016/12/01 PHP
php验证码生成器
2017/05/24 PHP
PHP中类与对象功能、用法实例解读
2020/03/27 PHP
在IE下获取object(ActiveX)的Param的代码
2009/09/15 Javascript
JavaScript 对象的属性和方法4种不同的类型
2010/03/19 Javascript
javascript中input中readonly和disabled区别介绍
2012/10/23 Javascript
ECMAScript 创建自己的js类库
2012/11/22 Javascript
jquery二级导航内容均分的原理及实现
2013/08/13 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
2015/03/24 Javascript
JavaScript框架是什么?怎样才能叫做框架?
2015/07/01 Javascript
Bootstrap每天必学之折叠
2016/04/12 Javascript
JS延时器提示框的应用实例代码解析
2016/04/27 Javascript
angularjs封装bootstrap时间插件datetimepicker
2016/06/20 Javascript
用JS中split方法实现彩色文字背景效果实例
2016/08/24 Javascript
js对字符串进行编码的方法总结(推荐)
2016/11/10 Javascript
jQuery插件echarts去掉垂直网格线用法示例
2017/03/03 Javascript
bootstrap select插件封装成Vue2.0组件
2017/04/17 Javascript
NodeJS使用七牛云存储上传文件的方法
2017/07/24 NodeJs
jQuery实现的点击按钮改变样式功能示例
2018/07/21 jQuery
JavaScript onclick事件使用方法详解
2020/05/15 Javascript
vue实现一个矩形标记区域(rectangle marker)的方法
2020/10/28 Javascript
下载安装setuptool和pip linux安装pip    
2014/01/24 Python
Python异步操作MySQL示例【使用aiomysql】
2019/05/16 Python
Python netmiko模块的使用
2020/02/14 Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
2020/04/21 Python
pycharm设置默认的UTF-8编码模式的方法详解
2020/06/01 Python
用Python 爬取猫眼电影数据分析《无名之辈》
2020/07/24 Python
如何通过python实现IOU计算代码实例
2020/11/02 Python
HTML5的结构和语义(5):交互
2008/10/17 HTML / CSS
iframe在移动端的缩放的示例代码
2018/10/12 HTML / CSS
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
2021/06/09 Python
漫画「狩龙人拉格纳」公开TV动画预告图
2022/03/22 日漫