Skip to content

mathiscode/password-leak

Repository files navigation

@mathiscode/password-leak

Live Demo

Version Downloads PRs Welcome GitHub license Known Vulnerabilities



Introduction

password-leak is a JavaScript module that can be used to determine if a password is compromised by checking with the Have I Been Pwned API.

How is this safe?

Your passwords are NEVER transmitted to any other system. This library makes use of the Have I Been Pwned API, which implements a k-Anonymity Model so your password can be checked without ever having to give it to any other party.

Installation

npm install @mathiscode/password-leak@latest

Usage in Browser

<script src="https://unpkg.com/@mathiscode/password-leak@latest"></script>

<script>
  const isLeaked = await isPasswordLeaked('myPassword')
  const strength = await checkPasswordStrength('myPassword')
  console.log('Is leaked?', isLeaked)
  console.log('Strength', strength)
</script>

Usage in Node.js

With import/await

import isPasswordLeaked from '@mathiscode/password-leak'

const isLeaked = await isPasswordLeaked('myPassword')
const strength = await checkPasswordStrength('myPassword')
console.log('Is leaked?', isLeaked)
console.log('Strength', strength)

With require/sync

const { checkPasswordStrength, isPasswordLeakedSync } = require('@mathiscode/password-leak')

isPasswordLeakedSync('myPassword', (error, isLeaked) => {
  if (error) throw new Error(error)
  console.log('Is leaked?', isLeaked)
})

const strength = checkPasswordStrength('myPassword')
console.log('Strength', strength)

Usage in Command Line

Install globally:

npm install -g @mathiscode/password-leak

You can also use it without installing via npx:

npx @mathiscode/password-leak myPassword

You can then use it in two ways:

  1. Interactive mode:
password-leak
  1. Direct mode:
password-leak myPassword

The command will:

  • Print whether the password has been compromised and its strength
  • Exit with status code 0 if the password is safe
  • Exit with status code 1 if the password is compromised or an error occurs

Development

# Clone the repository
git clone https://github.com/mathiscode/password-leak.git
cd password-leak

# Use pnpm to install dependencies
pnpm install

# Build the project
pnpm run build

# Run the tests
pnpm run test

# Start the UI
pnpm run ui # demo at https://password-leak.vercel.app