Multi-language Strong Password Generator With jQuery
File Size: | 6.12 KB |
---|---|
Views Total: | 1910 |
Last Update: | |
Publish Date: | |
Official Website: | Go to website |
License: | MIT |

This is a multi-language password generate web app that dynamically generates strong random password strings using jQuery, zxcvbn.js, jQuery lang.js, Bootstrap framework and Bootstrap Toggle plugin.
How to use it:
1. Load jQuery library and other requried resources in the document.
<!-- jQuery --> <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> <!-- Bootstrap --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous"> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script> <!-- Bootstrap Toggle Plugin --> <link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-toggle/2.2.2/css/bootstrap-toggle.min.css" rel="stylesheet"> <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-toggle/2.2.2/js/bootstrap-toggle.min.js"></script> <!-- zxcvbn.js --> <script src="https://cdnjs.cloudflare.com/ajax/libs/zxcvbn/4.4.2/zxcvbn.js"></script> <!-- jQuery lang.js plugin --> <script src="lib/jquery-lang.js"></script> <!-- language file --> <script src="langpack/fr.js"></script>
2. Create the html for the options of the password generator.
<div id="option_choice"> <form action="#"> <div class="my-3 p-3 bg-white rounded box-shadow"> <div class="border-bottom pb-2 mb-2 border-gray"> <table class="mytable"> <tr> <td class="myfirsttd"> <input type="number" name="length_chars_select" id="length_chars_select" min="3" max="120" value="12"/> </td> <td> <span lang="en">password character length</span> </td> </tr> </table> </div> <div class="border-bottom pb-2 mb-2 border-gray"> <table class="mytable"> <tr> <td class="myfirsttd"> <input type="checkbox" data-toggle="toggle" name="alphalower_chars_checkbox" id="alphalower_chars_checkbox" checked="checked" /> </td> <td> <span lang="en">string letters</span> </td> <td class="text-right"> <span class="chars_example">[ a b c ... x y z ]</span> </td> </tr> </table> </div> <div class="border-bottom pb-2 mb-2 border-gray"> <table class="mytable"> <tr> <td class="myfirsttd"> <input type="checkbox" data-toggle="toggle" name="alphaupper_chars_checkbox" id="alphaupper_chars_checkbox" checked="checked" /> </td> <td> <span lang="en">capital letters</span> </td> <td class="text-right"> <span class="chars_example">[ A B C ... X Y Z ]</span> </td> </tr> </table> </div> <div class="border-bottom pb-2 mb-2 border-gray"> <table class="mytable"> <tr> <td class="myfirsttd"> <input type="checkbox" data-toggle="toggle" name="num_chars_checkbox" id="num_chars_checkbox" checked="checked" /> </td> <td> <span lang="en">digits</span> </td> <td class="text-right"> <span class="chars_example">[ 0 1 2 ... 7 8 9 ]</span> </td> </tr> </table> </div> <div class="border-bottom pb-2 mb-2 border-gray"> <table class="mytable"> <tr> <td class="myfirsttd"> <input type="checkbox" data-toggle="toggle" name="hyphen_dash_underscore" id="hyphen_dash_underscore" /> </td> <td> <span lang="en">hyphen, underscore</span> </td> <td class="text-right"> <span class="chars_example">[ - _ ]</span> </td> </tr> </table> </div> <div class="border-bottom pb-2 mb-2 border-gray"> <table class="mytable"> <tr> <td class="myfirsttd"> <input type="checkbox" data-toggle="toggle" name="special_chars_checkbox" id="special_chars_checkbox" /> </td> <td> <span lang="en">special symbols</span> </td> <td class="text-right"> <span class="chars_example">[ ~ ! @ ... < > ? ]</span> </td> </tr> </table> </div> <div class="pb-2 mb-2"> <table class="mytable"> <tr> <td> <input type="checkbox" data-toggle="toggle" name="ambiguous_chars_checkbox" id="ambiguous_chars_checkbox" /> </td> <td> <span lang="en">ambiguous characters</span> </td> <td class="text-right"> <span class="chars_example">[ i o 0 O I 1 l ]</span> </td> </tr> </table> </div> </div> </form> </div>
3. Create a button to generate a password.
<div class="text-center"> <button type="button" class="btn btn-default btn-primary btn-lg" id="generate" lang="en">Generate Password</button> </div>
4. The main JavaScript to activate the password generator.
(function($) { $.generateRandomPassword = function(length, AlphaLower, AlphaUpper, Num, HypenDashUnderscore, Special, Ambiguous) { length = typeof length !== 'undefined' ? length : 8; AlphaLower = typeof AlphaLower !== 'undefined' ? AlphaLower : true; AlphaUpper = typeof AlphaUpper !== 'undefined' ? AlphaUpper : true; Num = typeof Num !== 'undefined' ? Num : true; HypenDashUnderscore = typeof HypenDashUnderscore !== 'undefined' ? HypenDashUnderscore : false; Special = typeof Special !== 'undefined' ? Special : false; Ambiguous = typeof Ambiguous !== 'undefined' ? Ambiguous : false; var password = ''; var chars = ''; if (AlphaLower) chars += 'abcdefghjkmnpqrstuvwxyz'; if (AlphaUpper) chars += 'ABCDEFGHJKLMNPQRSTUVWXYZ'; if (Num) chars += '23456789'; if (HypenDashUnderscore) chars += '-_'; if (Special) chars += '~!@#$%^&*()=+[]{};:,.<>/?'; if (AlphaLower && Ambiguous) chars += 'iol'; if (AlphaLower && Ambiguous) chars += 'IO'; if (Num && Ambiguous) chars += '01'; if (!AlphaLower && !Num && Ambiguous) chars += 'iolIO01'; if (chars == '') return window.lang.convert('Please make at least one selection'); var list = chars.split(''); var len = list.length, i = 0; do { i++; var index = Math.floor(Math.random() * len); password += list[index]; } while(i < length); return password; }; })(jQuery); $('form').on('submit', function(e) { e.preventDefault(); }); $(function() { $('#generate').click(function(event) { var pwd = $.generateRandomPassword( $("#length_chars_select").val(), $("#alphalower_chars_checkbox").is(":checked"), $("#alphaupper_chars_checkbox").is(":checked"), $("#num_chars_checkbox").is(":checked"), $("#hyphen_dash_underscore").is(":checked"), $("#special_chars_checkbox").is(":checked"), $("#ambiguous_chars_checkbox").is(":checked") ); var score = zxcvbn(pwd).score; switch(score) { case 0: case 1: var color = '#C33'; break; case 2: var color = '#F80'; break; case 3: var color = '#FFEC20'; break; case 4: var color = '#19ba20'; break; default: var color = '#C33'; } var image = 'img/' + score + '.jpg'; $('<div class="password-meter"/>').css('background', color).insertAfter($(this).parent()); $('<div class="password-string"/>').text(pwd).insertAfter($(this).parent()); event.preventDefault(); }); }); $( '.checkboxlist' ).on( 'click', 'input:checkbox', function () { $( this ).parent().toggleClass( 'checked_item', this.checked ); $( this ).parent().toggleClass( 'unchecked_item' ); }); $('#alphalower_chars_checkbox').click( function() { $(this).addClass('active').siblings().removeClass('active'); });
Changelog:
2018-09-16
- Adding a copy to clipboard feature.
This awesome jQuery plugin is developed by clicface. For more Advanced Usages, please check the demo page or visit the official website.