pwkit
TypeScript icon, indicating that this package has built-in type declarations

0.0.6 • Public • Published

PWkit

PWkit

Modern, customizable password generator and tester with entropy analysis and flexible character group settings.

See a small demo, that uses this package!

Import into your project

pnpm add pwkit
npm install pwkit
yarn add pwkit

Usage

generate a password

import { password } from "pwkit";

// initialize
const pwd = password();

// use with default settings
console.log(pwd.create());

more advanced usage

import { password } from "pwkit";

const options = {
  length: 12,
  lowercase: 4,
  symbols: 3,
};
const pwd = password(options);

// generates a random password with a length of 12
// and ensures that at least 4 lower-case letters and
// at least 3 symbols are used for the generation.
console.log(pwd.create());

Test a password

import { password } from "pwkit";

const pwd = password();
const myPassword = '.Pa55-W0rD';
const result = pwd.test(myPassword);

console.log(result);

Methods

create(options?)

const options = {
  // see below
};
const pwd = password(options);
const myPassword = pwd.create();

console.log(myPassword);
// returns, eg.:
// {
//   entropy: 65.23561956057013
//   length: 10
//   password: "7)9uUIU]vg"
//   statistic: {
//     lowercase: 3,
//     uppercase: 3,
//     numbers: 2,
//     symbols: 2,
//     umlauts: 0
//   }
//   strength: 0.6523561956057012,
// }

test(string)

const pwd = password();
const myPassword = '.Pa55-W0rD';

const test = pwd.test(myPassword);
console.log(tmp);
// returns:
// {
//   entropy: 65.23561956057013,
//   length: 10,
//   statistic: {
//     lowercase: 2,
//     uppercase: 3,
//     numbers: 3,
//     symbols: 2,
//     umlauts: 0,
//   },
//   strength: 0.6523561956057012,
// }

setCharGroups()

to override the character groups

const pwd = password();
const myNewGroups = {
  lowercase: 'abcdefg',
  uppercase: 'HIJKMLN',
  numbers: '0123456',
  symbols: '!"§$%&/',
}
pwd.setCharGroups(myNewGroups);

resetCharGroups()

reset all Groups to their default value

const pwd = password();
pwd.resetCharGroups();

updateSettings()

Useful to override the settings. The old settings will be overwritten!

const pwd = password();
const myNewSettings = {
  length: 32,
  // and others, see options
};
pwd.updateSettings(myNewSettings);

getCharset()

returns all characters (that are used for password generation) as a string.

const pwd = password();
const chars = pwd.getCharset();
console.log(chars);

options

options = {
  // the length of the password
  // default: 10
  length: 10,

  // should lowercase chars be included
  // values: true | false | number
  // e.g.: 3 (use at least 3 chars from the lowercase character-set)
  // default: true
  lowercase: true,

  // should uppercase chars be included
  // values: true | false | number
  // e.g.: 3 (use at least 3 chars from the uppercase character-set)
  // default: true
  uppercase: true,

  // should numbers chars be included
  // values: true | false | number
  // e.g.: 3 (use at least 3 chars from the numbers character-set)
  // default: true
  numbers: true,

  // should symbols chars be included
  // values: true | false | number
  // e.g.: 3 (use at least 3 chars from the symbols character-set)
  // default: true
  symbols: true,

  // should umlauts chars be included
  // values: true | false | number
  // e.g.: 3 (use at least 3 chars from the umlauts character-set)
  // default: false
  umlauts: false,

  // exclude similar looking characters like '0' and 'O'
  // values: true | false
  // default: false
  excludeSimilar: false,

  // try to distribute normal over the the selected character-sets!
  // e.g.: if set to true, length set to 16, and lowercase, uppercase, numbers, and symbols are set to true. We get 4 lowercase, 4 uppercase, 4 numbers and 4 symbols in the resulting password
  // values: true | false
  // default: false
  normalDistribute: false,
}

Package Sidebar

Install

npm i pwkit

Weekly Downloads

14

Version

0.0.6

License

MIT

Unpacked Size

25.6 kB

Total Files

11

Last publish

Collaborators

  • lemon3