1.2.0 • Published 3 years ago

generate-passphrase-id v1.2.0

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

Generate Passphrase

npm npm npm bundle size Codecov GitHub branch checks state GitHub

✨Zero dependency module for generating passphrase.

An Indonesian language fork of (also my repository) generate-passphrase.

  • 🚀 Simple passphrase generator with simple config
  • ✨ ESM support
  • 🔑 Cryptographically secure
  • 📕 Built-in Typescript typings
  • 🎊 Supports Node.js 10 and higher

The code is close to node generate-password repo. But this is for a passphrase, with Indonesian language.

ProtonMail has a decent article explaining about password vs passphrase.

Is this secure? Yes. I don't use Math.floor, I used the crypto module.

Why is this repo heavy? I'm using scraped words list from KBBI for fetching the Indonesian word list. If you have a better idea/workaround for this, feel free to open up an issue and file a PR! I'll gladly accept any feedbacks.

Installation

$ npm install generate-passphrase-id
# or
$ yarn add generate-passphrase-id
# or basically any package manager you like.

How to use this?

import { generate, generateMultiple } from 'generate-passphrase-id'
// or
const { generate, generateMultiple } = require('generate-passphrase-id')

const passphrase = generate();
// 'spionase-syahwat-41-neolitikum'
const anotherPassphrase = generate({ length: 3, separator: '.', titlecase: true }) 
// see available options below

const multiplePassphrase = generateMultiple(3)
// ['pomologi-jerojol-kalau-senandika', 'kakek-meristem-89-emigras', ... ]
const anotherMultiplePassphrase = generateMultiple(10, { length: 2, uppercase: true, numbers: false })

I know some of us need to generate it fast just for the sake of it, you can add fast as a parameter. (It defaults to false). Please bear in mind, this would make the returning random passphrase not cryptographically secure

const fast = generate({ fast: true })
// cultivars-strigose-avisements-58

const extraFast = generateMultiple(5, { fast: true })
// ['extrorsal-169-resultlessness-168', 'postmodern-kolkhozniki-skulkers-99', ... ]

Options

KeyTypeDefault
lengthinteger4
separatorstring'-'
numbersbooleantrue
uppercasebooleanfalse
titlecasebooleanfalse
patternstringnull

A few things to note:

  • Uppercase is more prioritized than titlecase. So if you have both options set to true, it will be words full of uppercase.
  • Pattern option is more prioritized than length, because you've set the passphrase pattern, hence the module is using the length from your pattern.

Benchmark a.k.a How slow is this?

TL;DR: It's slow.

I'm using:

  • Asus ROG GL553VE
  • Windows 10 Home 64-bit (10.0 Build 18363)
  • Intel Core i7-7700HQ @ 2.80GHz, 8 CPUs
  • 16 GB RAM

Benchmark for single passphrase/password:

ModuleOps/secAccuracyRuns sampled
generate-passphrase-id107,649±1.89%407
generate-passphrase (fast enabled)503,082±1.26%438
generate-password401,664±1.33%335
niceware268,618±1.95%319
randomatic7,870±3.16%307

Benchmark for multiple passphrase/password (generateMultiple function):

ModuleOps/secAccuracyRuns sampled
generate-passphrase-id11,714±1.37%425
generate-passphrase-id (fast enabled)50,090±2.54%432
generate-password40,261±2.26%332

Contributing

Yes please.

License

MIT

1.2.0

3 years ago

1.1.0

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago

0.0.1-beta3

3 years ago

0.0.1-beta2

3 years ago

0.0.1-beta1

3 years ago