1.1.0 • Published 11 months ago

@mgraphic/cipher-token v1.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
11 months ago

Link to the full API Documentation

A package tool to encrypt and decrypt secrets into storable string values without requiring a vault to store them. Tokens can ciphered and deciphered by a single key that can be generated by a string, buffer, file, or auto-generated (to be stored privately), or even a combination of these.

npm install @mgraphic/cipher-token

CLI Tool

npx @mgraphic/cipher-token

Results In...

CLI Example

You can either use the prompt interaction to create a token, decipher a token, or generate a random string to be used for a key.

tokenize

npx @mgraphic/cipher-token tokenize --key=<secret key> [flags...] <plainText>

Arguments |ARGUMENT|DESCRIPTION|TYPE|REQUIRED| |-|-|-|-| |plainText|Plain text to tokenize|string|yes|

Options |FLAG|ALIAS|DESCRIPTION|TYPE|DEFAULT|REQUIRED| |-|-|-|-|-|-| |--cipher-algorithm|-a|Cipher Algorithm|string|aes-256-gcm|false| |--encryption-encoding|-e|Encryption Encoding|string|hex|false| |--hash-algorithm|-y|Hash Algorithm|string|sha256|false| |--key||Secret Key|string||true| |--key-length|-k|Key Length|number|32|false| |--salt-byte-size|-b|Salt Byte Size|number|8|false| |--salt-encoding|-s|Salt Encoding|string|hex|false| |--tag-encoding|-t|Tag Encoding|string|hex|false| |--text-encoding|-x|Text Encoding|string|utf8|false| |--token-encoding|-z|Token Encoding|string|base64|false|

untokenize

npx @mgraphic/cipher-token tokenize --key=<secret key> [flags...] <token>

Arguments |ARGUMENT|DESCRIPTION|TYPE|REQUIRED| |-|-|-|-| |token|Token string to decipher|string|yes|

Options |FLAG|ALIAS|DESCRIPTION|TYPE|DEFAULT|REQUIRED| |-|-|-|-|-|-| |--cipher-algorithm|-a|Cipher Algorithm|string|aes-256-gcm|false| |--encryption-encoding|-e|Encryption Encoding|string|hex|false| |--hash-algorithm|-y|Hash Algorithm|string|sha256|false| |--key||Secret Key|string||true| |--key-length|-k|Key Length|number|32|false| |--salt-byte-size|-b|Salt Byte Size|number|8|false| |--salt-encoding|-s|Salt Encoding|string|hex|false| |--tag-encoding|-t|Tag Encoding|string|hex|false| |--text-encoding|-x|Text Encoding|string|utf8|false| |--token-encoding|-z|Token Encoding|string|base64|false|

generate

npx @mgraphic/cipher-token generate [flags...]

Options |FLAG|ALIAS|DESCRIPTION|TYPE|DEFAULT|REQUIRED| |-|-|-|-|-|-| |--byte-size|-b|Byte Size|number|32|false|

Code Examples

Key From String

const { getCipherToken, getDecipherToken } = require('@mgraphic/cipher-token');

//   Encrypt:
const cipherToken = getCipherToken();
cipherToken.keyFromString('secret_string_key');
const token = cipherToken.tokenize('Secret Text encrypted by a string key');
console.log('Token:', token);

// Decrypt:
const decipherToken = getDecipherToken();
decipherToken.keyFromString('secret_string_key');
const decrypted = decipherToken.untokenize(token);
console.log('Decrypted:', decrypted);

Key From File

const { getCipherToken, getDecipherToken } = require('@mgraphic/cipher-token');

//   Encrypt:
const cipherToken = getCipherToken();
await cipherToken.keyFromFile('package.json');
const token = cipherToken.tokenize('Secret Text encrypted by a file key');
console.log('Token', ': ', token);

//   Decrypt:
const decipherToken = getDecipherToken();
await decipherToken.keyFromFile('package.json');
const decrypted = decipherToken.untokenize(token);
console.log('Decrypted', ': ', decrypted);

Key From Buffer

const { getCipherToken, getDecipherToken } = require('@mgraphic/cipher-token');

//   Encrypt:
const cipherToken = getCipherToken();
cipherToken.keyFromBuffer(Buffer.from('buffer_key'));
const token = cipherToken.tokenize('Secret Text encrypted by a buffer key');
console.log('Token', ': ', token);

//   Decrypt:
const decipherToken = getDecipherToken();
decipherToken.keyFromBuffer(Buffer.from('buffer_key'));
const decrypted = decipherToken.untokenize(token);
console.log('Decrypted', ': ', decrypted);

Key From Buffer, File, and String

const { getCipherToken, getDecipherToken } = require('@mgraphic/cipher-token');

//   Encrypt:
const cipherToken = getCipherToken();
await cipherToken.keyFrom({
  buffer: Buffer.from('buffer_key'),
  text: 'secreat-key-string',
  file: 'package.json',
});
const token = cipherToken.tokenize('Secret Text encrypted by a combo key');
console.log('Token', ': ', token);

//   Decrypt:
const decipherToken = getDecipherToken();
await decipherToken.keyFrom({
  buffer: Buffer.from('buffer_key'),
  text: 'secreat-key-string',
  file: 'package.json',
});
const decrypted = decipherToken.untokenize(token);
console.log('Decrypted', ': ', decrypted);

Key From Random Generated String

const {
  getCipherToken,
  getDecipherToken,
  generateRandomString,
} = require('@mgraphic/cipher-token');

//   Encrypt:
const key = generateRandomString();
const cipherToken = getCipherToken();
cipherToken.keyFromString(key);
const token = cipherToken.tokenize(
  'Secret Text encrypted by a random bytes key'
);
console.log('Token', ': ', token);

//   Decrypt:
const decipherToken = getDecipherToken();
decipherToken.keyFromString(key);
const decrypted = decipherToken.untokenize(token);
console.log('Decrypted', ': ', decrypted);

Author

Keith Marshall keith@kmarshall.com

License

Copyright © 2024 Keith Marshall <keith@kmarshall.com>. This project is MIT licensed.

1.1.0

11 months ago

1.0.1

12 months ago

1.0.0

12 months ago

0.0.6

1 year ago

0.0.5

1 year ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.3-0

1 year ago

0.0.2

1 year ago