From 3942c97d46a10b68f83a4ff03490b0dec9f5b2f7 Mon Sep 17 00:00:00 2001 From: ryan Date: Wed, 22 Oct 2008 04:20:50 +0000 Subject: [PATCH] Improved password strength meter from Otto42. fixes #7124 git-svn-id: http://svn.automattic.com/wordpress/trunk@9276 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-admin/js/password-strength-meter.js | 82 ++++---------------------- wp-includes/script-loader.php | 2 +- 2 files changed, 14 insertions(+), 70 deletions(-) diff --git a/wp-admin/js/password-strength-meter.js b/wp-admin/js/password-strength-meter.js index f9f1d5341e..94e7eb145f 100644 --- a/wp-admin/js/password-strength-meter.js +++ b/wp-admin/js/password-strength-meter.js @@ -1,79 +1,23 @@ // Password strength meter -// This jQuery plugin is written by firas kassem [2007.04.05] -// Firas Kassem phiras.wordpress.com || phiras at gmail {dot} com -// for more information : http://phiras.wordpress.com/2007/04/08/password-strength-meter-a-jquery-plugin/ function passwordStrength(password,username) { - var shortPass = 1, badPass = 2, goodPass = 3, strongPass = 4, score = 0, d, s, u, l; + var shortPass = 1, badPass = 2, goodPass = 3, strongPass = 4; - //password < 4 + //password < 4 if (password.length < 4 ) { return shortPass }; //password == username if (password.toLowerCase()==username.toLowerCase()) return badPass; - //password length - score += password.length * 4; - score += ( checkRepetition(1,password).length - password.length ) * 1; - score += ( checkRepetition(2,password).length - password.length ) * 1; - score += ( checkRepetition(3,password).length - password.length ) * 1; - score += ( checkRepetition(4,password).length - password.length ) * 1; - - d = password.match(/\d/g); - s = password.match(/[^\d\w]/g); - u = password.match(/[A-Z]/g); - l = password.match(/[a-z]/g); - - //password has 3 numbers - if ( d && d.length > 2 ) score += 5; - - //password has 2 sybols - if ( s && s.length > 1 ) score += 10; - - //password has Upper and Lower chars - if ( u && l ) score += 10; - - //password has number and chars - if ( u && l && d ) score += 15; - // - //password has number and symbol - if ( s && d ) score += 15; - - //password has Upper char and symbol - if ( u && s ) score += 15; - - //password is just a nubers or chars - if ( ! s ) score -= 10; - - //verifing 0 < score < 100 - if ( score < 0 ) score = 0; - if ( score > 100 ) score = 100; - - if ( score < 34 ) return badPass; - if ( score < 68 || password.length < 7 ) return goodPass; + var symbolSize = 0; + if (password.match(/[0-9]/)) symbolSize +=10; + if (password.match(/[a-z]/)) symbolSize +=26; + if (password.match(/[A-Z]/)) symbolSize +=26; + if (password.match(/[^a-zA-Z0-9]/)) symbolSize +=31; + + var natLog = Math.log( Math.pow(symbolSize,password.length) ); + var score = natLog / Math.LN2; + if (score < 40 ) return badPass + if (score < 56 ) return goodPass return strongPass; -} - - -// checkRepetition(1,'aaaaaaabcbc') = 'abcbc' -// checkRepetition(2,'aaaaaaabcbc') = 'aabc' -// checkRepetition(2,'aaaaaaabcdbcd') = 'aabcd' - -function checkRepetition(pLen,str) { - res = "" - for ( i=0; iadd( 'admin-categories', '/wp-admin/js/categories.js', array('wp-lists', 'columns', 'settings-box'), '20080925' ); $scripts->add( 'admin-tags', '/wp-admin/js/tags.js', array('wp-lists', 'columns', 'settings-box'), '20080925' ); $scripts->add( 'admin-custom-fields', '/wp-admin/js/custom-fields.js', array('wp-lists'), '20070823' ); - $scripts->add( 'password-strength-meter', '/wp-admin/js/password-strength-meter.js', array('jquery'), '20080824' ); + $scripts->add( 'password-strength-meter', '/wp-admin/js/password-strength-meter.js', array('jquery'), '20081021' ); $scripts->localize( 'password-strength-meter', 'pwsL10n', array( 'empty' => __('Strength indicator'), 'short' => __('Very weak'),