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 相关文章推荐
取键盘键位ASCII码的网页
Jul 30 Javascript
IE php关于强制下载文件的代码
Aug 23 Javascript
JS Replace 全部替换字符的用法小结
Dec 24 Javascript
JavaScript中实现异步编程模式的4种方法
Sep 24 Javascript
javascript将url中的参数加密解密代码
Nov 17 Javascript
node.js中的console.assert方法使用说明
Dec 10 Javascript
JQuery给网页更换皮肤的方法
May 30 Javascript
jQuery幻灯片特效代码分享--鼠标滑过按钮时切换(2)
Nov 18 Javascript
jQuery stop()用法实例详解
Jul 28 Javascript
使用ef6创建oracle数据库的实体模型遇到的问题及解决方案
Nov 09 Javascript
web前端vue实现插值文本和输出原始html
Jan 19 Javascript
bootstrap下拉分页样式 带跳转页码
Dec 29 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
域名和cookie问题(域名后缀)
2012/10/10 PHP
PHP包含文件函数include、include_once、require、require_once区别总结
2014/04/05 PHP
thinkphp使用literal防止模板标签被解析的方法
2014/11/22 PHP
使用PHP生成二维码的方法汇总
2015/07/22 PHP
最新制作ThinkPHP3.2.3完全开发手册
2015/11/23 PHP
Thinkphp实现短信验证注册功能
2016/10/18 PHP
php 处理png图片白色背景色改为透明色的实例代码
2018/12/10 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
javascript 页面只自动刷新一次
2009/07/10 Javascript
让JavaScript 轻松支持函数重载 (Part 1 - 设计)
2009/08/04 Javascript
基于jquery的无缝循环新闻列表插件
2011/03/07 Javascript
2014年50个程序员最适用的免费JQuery插件
2014/12/15 Javascript
原生js的数组除重复简单实例
2016/05/24 Javascript
jQuery图片轮播实现并封装(一)
2016/12/03 Javascript
VUE使用vuex解决模块间传值问题的方法
2017/06/01 Javascript
js统计页面上每个标签的数量实例代码
2018/05/29 Javascript
在vue中更换字体,本地存储字体非引用在线字体库的方法
2018/09/28 Javascript
React手稿之 React-Saga的详解
2018/11/12 Javascript
JavaScript数据结构与算法之检索算法示例【二分查找法、计算重复次数】
2019/02/22 Javascript
JavaScript 实现下雪特效的示例代码
2020/09/09 Javascript
python常见的格式化输出小结
2016/12/15 Python
django轻松使用富文本编辑器CKEditor的方法
2017/03/30 Python
Python代码打开本地.mp4格式文件的方法
2019/01/03 Python
Django 多表关联 存储 使用方法详解 ManyToManyField save
2019/08/09 Python
Python json模块与jsonpath模块区别详解
2020/03/05 Python
Myprotein瑞典官方网站:畅销欧洲英国运动营养品牌
2018/01/22 全球购物
KIKO MILANO俄罗斯官网:意大利领先的化妆品和护肤品品牌
2021/01/09 全球购物
医院节能减排方案
2014/06/13 职场文书
奶茶店创业计划书
2014/08/14 职场文书
心得体会的写法
2014/09/05 职场文书
三峡导游词
2015/01/31 职场文书
公司市场部岗位职责
2015/04/15 职场文书
2016年大学生社会实践心得体会
2015/10/09 职场文书
MySQL 分组查询的优化方法
2021/05/12 MySQL
Python 类,对象,数据分类,函数参数传递详解
2021/09/25 Python
python使用shell脚本创建kafka连接器
2022/04/29 Python