unixcrypt-browser
Version:
Node.js implementation of Unixcrypt, specifically SHA-256 and SHA-512
73 lines (50 loc) • 2.12 kB
Markdown
# Unixcrypt for Browser
[](https://github.com/sharevb/unixcrypt-browser/actions/workflows/master.yaml)
[](https://github.com/sharevb/unixcrypt-browser/actions)
[](https://codecov.io/github/sharevb/unixcrypt-browser)
[](https://www.apache.org/licenses/LICENSE-2.0)
A Browser module for encrypting and verifying passwords according to the SHA-256 and SHA-512 Crypt standard:
https://www.akkadia.org/drepper/SHA-crypt.txt
## Installation
```sh
$ npm install unixcrypt-browser
```
## Usage
### JavaScript
The JavaScript usage should be identical to the TypeScript below.
### TypeScript
```typescript
import { encrypt, verify } from "unixcrypt-browser"
const plaintextPassword = "password"
// without providing salt, random salt is used, and default number of rounds
const pwHash = encrypt(plaintextPassword)
// verify password with generated hash
console.log(verify(plaintextPassword, pwHash))
// true
// specify number of rounds
const moreRounds = encrypt(plaintextPassword, "$6$rounds=10000")
console.log(verify(plaintextPassword, moreRounds))
// true
// provide custom salt
const customSalt = encrypt(plaintextPassword, "$6$salt")
console.log(verify(plaintextPassword, customSalt))
// true
// or provide both rounds and salt
const customRoundsAndSalt = encrypt(plaintextPassword, "$6$rounds=10000$salt")
console.log(verify(plaintextPassword, customRoundsAndSalt))
// true
// you can also use SHA-256
const sha256 = encrypt(plaintextPassword, "$5")
console.log(verify(plaintextPassword, sha256))
// true
```
## Test
The tests are written with the built-in [node:assert](https://nodejs.org/api/assert.html) module, using the [vitest](https://vitest.dev/) test runner.
```sh
$ npm test
```
or
```sh
$ npm run test:watch
```
to get automatic re-tests when files are changed.