The Keymaker
This package contains a library to encrypt - decrypt a message that has to be sent over the internet.
Installation
Using npm:
npm install @naluri-hidup/keymaker
Using yarn:
yarn add @naluri-hidup/keymaker
Usage
Import the library using:
import { Keymaker } from "@naluri-hidup/keymaker";
Public - Private Key Asymmetric Encryption
This module uses TweetNaCL package.
const keymaker = new Keymaker(Keymaker.random(32));
const encrypted = keymaker.encrypt(message);
const decrypted = keymaker.decrypt(encrypted);
NOTE: The master key SHOULD be 32 char length.
Or if you prefer NOT to use passphrased key pair, use the static method instead:
const aliceKeyPair = Keymaker.keyPair();
const bobKeyPair = Keymaker.keyPair();
const message = Keymaker.random(128);
// On Alice's side
const encrypted = Keymaker.encrypt(
message,
Keymaker.encodeBase64(bobKeyPair.publicKey),
Keymaker.encodeBase64(aliceKeyPair.secretKey)
);
// On Bob's side
const decrypted = Keymaker.decrypt(
encrypted,
Keymaker.encodeBase64(aliceKeyPair.publicKey),
Keymaker.encodeBase64(bobKeyPair.secretKey)
);
// decrypted === message
Bcrypt
This module uses bcrypt package.
const password = await Keymaker.hash("plain-password");
const isValid = await Keymaker.validate("plain-password", password); // => "true"
You may define the bcrypt rounds by supplying second argument. By default, it uses 8 rounds.
const password = await Keymaker.hash("plain-password", 16); // 16 rounds
Additional
You can generate an random string using this package.
const random = Keymaker.random(16); // Generate 16 characters random string
const randomNumeric = Keymaker.random(16, "numeric"); // Generate 16 characters numeric string
See the available type of randomness here.
Password Generator
You can generate a password using this package by doing:
const password = Keymaker.generatePassword(); // Generate 8 character secure password
The password criteria is:
- Should be consist of more than or equal to 8 characters
- Has minimal one uppercase alphabet (
[A-Z]
) - Has minimal one lowercase alphabet (
[a-z]
) - Has minimal one numeric character (
[0-9]
) - Has minimal one special character (
[\?\-]
)