Skip to content

ryanbekhen/cryptkhen

CRYPTKHEN

License npm version Rate on Openbase

Node.js library for simple implementation of encryption, decryption and digital signatures based on the Node.js crypto module

Features

  • Encryption & Decryption (RSA, AES-256).
  • Generate signature & verify (RSA)

Install

npm i @ryanbekhen/cryptkhen

Quick start

First of all, initialize:

import { AES256Encryption, RSAEncryption } from '@ryanbekhen/cryptkhen';
const aes256 = new AES256Encryption('secret');
const rsa = new RSAEncryption();

AES-256

Before encrypting data of type string, the data is first converted into a buffer. The encrypted data will be in the form of a buffer and converted to base64.

const data = Buffer.from('data');
const encryptedText = aes256.encrypt(data).toString('base64');

When decrypting encrypted text, the encrypted text will be converted into a buffer first. The decrypted data will be buffered and converted to a string.

const decryptedText = aes256.decrypt(Buffer.from(encryptedText, 'base64')).toString();

If you are encrypting a file that will produce an encrypted file, there is no need to change the encryption result to base64 because the encryption result in the form of a buffer will be written into a new file, for example it will be written in the data.enc file.

RSA

When generating a public key and a private key, the function defaults to using bits of size 2048 without a passphrase.

const pem = await rsa.generateKey();

Text encryption will produce encrypted text in base64 form.

const encryptedText = rsa.encrypt(pem.publicKey, 'data');

When decrypting encrypted text, a passphrase is required if at the time of generating the RSA key the passphrase is used.

const decryptedText = rsa.decrypt(pem.privateKey, encryptedText);

Create digital signatures based on verifiable data.

const signature = rsa.signature(pem.privateKey, 'data');

Verify signature authenticity.

const verify = rsa.isVerified(pem.publicKey, signature, 'data');

Contributing

Questions, comments, bug reports, and pull requests are all welcome.

License

This software is licensed under the Apache 2 license.