Socket
Socket
Sign inDemoInstall

generate-passphrase

Package Overview
Dependencies
0
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    generate-passphrase

Zero dependency module - Secure random passphrase


Version published
Maintainers
1
Install size
2.69 MB
Created

Readme

Source

Generate Passphrase

npm npm bundle size npm Codecov GitHub branch checks state CodeFactor GitHub

✨Zero dependency module for generating 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 English 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 sindresorhus' word-list repo for fetching the English 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
# or
$ yarn add generate-passphrase
# or basically any package manager you like.

How to use this?

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

const passphrase = generate();
// 'provoke-goddesshoods-26-staghorns'
const anotherPassphrase = generate({ length: 3, separator: '.', titlecase: true }) 
// see available options below

const multiplePassphrase = generateMultiple(3)
// ['pinocytotically-loricated-prithee-hypnotizer', 'sambaing-phenotypically-singlesticks-239', ... ]
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
fastbooleanfalse

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. On v1.1.0, I managed to get the algorithm runs a lot faster. There is also an additional fast option if you're just aiming for the speed.

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-passphrase117,546±2.32%385
generate-passphrase (fast enabled)653,668±1.07%444
generate-password434,495±1.49%332
niceware207,719±5.79%232
randomatic8,026±2.23%319

Benchmark for multiple passphrase/password (generateMultiple function):

ModuleOps/secAccuracyRuns sampled
generate-passphrase12,338±1.80%407
generate-passphrase (fast enabled)64,124±1.51%441
generate-password43,775±2.15%317

Contributing

Yes please.

License

MIT

Keywords

FAQs

Last updated on 27 Jun 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc