crypty
Version:
Simple encryption and decryption.
43 lines (35 loc) • 1.26 kB
JavaScript
;
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;
}