1.1.0 • Published 10 months ago

@mgraphic/cipher-token v1.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
10 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

10 months ago

1.0.1

10 months ago

1.0.0

10 months ago

0.0.6

10 months ago

0.0.5

10 months ago

0.0.4

10 months ago

0.0.3

11 months ago

0.0.3-0

11 months ago

0.0.2

11 months ago