Generate Passphrase
✨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
$ yarn add generate-passphrase-id
How to use this?
import { generate, generateMultiple } from 'generate-passphrase-id'
const { generate, generateMultiple } = require('generate-passphrase-id')
const passphrase = generate();
const anotherPassphrase = generate({ length: 3, separator: '.', titlecase: true })
const multiplePassphrase = generateMultiple(3)
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 })
const extraFast = generateMultiple(5, { fast: true })
Options
Key | Type | Default |
---|
length | integer | 4 |
separator | string | '-' |
numbers | boolean | true |
uppercase | boolean | false |
titlecase | boolean | false |
pattern | string | null |
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:
Module | Ops/sec | Accuracy | Runs sampled |
---|
generate-passphrase-id | 107,649 | ±1.89% | 407 |
generate-passphrase (fast enabled) | 503,082 | ±1.26% | 438 |
generate-password | 401,664 | ±1.33% | 335 |
niceware | 268,618 | ±1.95% | 319 |
randomatic | 7,870 | ±3.16% | 307 |
Benchmark for multiple passphrase/password (generateMultiple
function):
Module | Ops/sec | Accuracy | Runs sampled |
---|
generate-passphrase-id | 11,714 | ±1.37% | 425 |
generate-passphrase-id (fast enabled) | 50,090 | ±2.54% | 432 |
generate-password | 40,261 | ±2.26% | 332 |
Contributing
Yes please.
License
MIT