UNPKG

crypty

Version:

Simple encryption and decryption.

43 lines (35 loc) 1.26 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.isSecretValid = exports.ivFromSecret = undefined; exports.encrypt = encrypt; exports.decrypt = decrypt; var _crypto = require('crypto'); var _crypto2 = _interopRequireDefault(_crypto); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var algorithm = 'aes-256-cbc'; var ivFromSecret = exports.ivFromSecret = function ivFromSecret(secret) { return secret.slice(0, 16); }; var isSecretValid = exports.isSecretValid = function isSecretValid(secret) { return !!secret && secret.length === 32; }; function encrypt(text, secret) { if (!isSecretValid(secret)) { throw new Error('Secret must have 32 bytes.'); } var cipher = _crypto2.default.createCipheriv(algorithm, secret, ivFromSecret(secret)); var crypted = cipher.update(text, 'utf8', 'hex'); crypted += cipher.final('hex'); return crypted; } function decrypt(text, secret) { if (!isSecretValid(secret)) { throw new Error('Secret must have 32 bytes.'); } var decipher = _crypto2.default.createDecipheriv(algorithm, secret, ivFromSecret(secret)); var dec = decipher.update(text, 'hex', 'utf8'); dec += decipher.final('utf8'); return dec; }