Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zacanger/cracklibjs
Pure JS Cracklib-inspired library for Node.
https://github.com/zacanger/cracklibjs
cracklib js libcrack node password security
Last synced: 3 months ago
JSON representation
Pure JS Cracklib-inspired library for Node.
- Host: GitHub
- URL: https://github.com/zacanger/cracklibjs
- Owner: zacanger
- License: mit
- Created: 2018-09-09T16:38:08.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-06-02T23:31:45.000Z (7 months ago)
- Last Synced: 2024-10-11T10:31:20.188Z (3 months ago)
- Topics: cracklib, js, libcrack, node, password, security
- Language: TypeScript
- Homepage: http://npm.im/cracklibjs
- Size: 2.24 MB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE.md
- Security: .github/SECURITY.md
Awesome Lists containing this project
README
# cracklibjs
Pure JS Cracklib-inspired library for Node.
[![npm version](https://img.shields.io/npm/v/cracklibjs.svg)](https://npm.im/cracklibjs) [![CircleCI](https://circleci.com/gh/zacanger/cracklibjs.svg?style=svg)](https://circleci.com/gh/zacanger/cracklibjs) [![codecov](https://codecov.io/gh/zacanger/cracklibjs/branch/master/graph/badge.svg)](https://codecov.io/gh/zacanger/cracklibjs) [![Known Vulnerabilities](https://snyk.io/test/github/zacanger/cracklibjs/badge.svg?targetFile=package.json)](https://snyk.io/test/github/zacanger/cracklibjs?targetFile=package.json)
[Donate](https://ko-fi.com/zacanger)
--------
## Installation
`npm i cracklibjs`
## Usage
```javascript
import cracklib from 'cracklibjs'
// if you're using `require`, you'll need to `require('cracklibjs').default`const pw = process.argv[2] // or something
// Init with options. The wordlist is parsed here, so future calls
// don't have to do all that work again.
// `check: (word: string) => PasswordValidationError | string (word)`
const check = cracklib() // cracklib(options)
// The `options` param is optional.
// type Options = {
// dict: string = '/usr/share/dict/words'; path to dictionary file
// minLength: number = 8; minimum password length
// loose: bool = false; see below for loose vs strict
// }const validate = (pw) => {
try {
return check(pw)
} catch (e) {
return e.message // example: 'Password is too short'
}
}
```The `loose` option, when true, disables:
* Case-insensitive checks
* Reversed string checks
* md5, sha1, sha256, and sha512 checks## Questions
* Why?
* The npm package `cracklib` isn't a vanilla JS solution, has external
dependencies, and may not build on all Unix-like systems and future versions
of Node.
* I have more than one word list, what should I do?
* Try [`cat(1)`](https://www.mankier.com/1/cat)
* This seems slow!
* Don't initialize more than once. Initialization _can_ be slow, depending on
your word list and your machine. Hopefully the actual check is fast.[LICENSE](./LICENSE.md)