sk-crypto
Version:
ShaneKing's Crypto for JavaScript
56 lines (43 loc) • 7.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _cryptoJs = require('crypto-js');
var _cryptoJs2 = _interopRequireDefault(_cryptoJs);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var SKCrypto = function () {
function SKCrypto() {
_classCallCheck(this, SKCrypto);
}
_createClass(SKCrypto, null, [{
key: 'aesDecrypt',
value: function aesDecrypt(cipherText) {
var salt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SKCrypto.DEFAULT_SALT;
var iv = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : salt.substr(0, salt.length / 2);
var passPhrase = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : salt;
var iterations = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : salt.length;
var keySize = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : salt.length * 2 / 32;
return _cryptoJs2.default.AES.decrypt(_cryptoJs2.default.lib.CipherParams.create({
ciphertext: _cryptoJs2.default.enc.Base64.parse(cipherText)
}), _cryptoJs2.default.PBKDF2(passPhrase, _cryptoJs2.default.enc.Hex.parse(salt), { iterations: iterations, keySize: keySize }), { iv: _cryptoJs2.default.enc.Hex.parse(iv) }).toString(_cryptoJs2.default.enc.Utf8);
}
//ThisIsSixFourBitSaltForShaneKing
}, {
key: 'aesEncrypt',
value: function aesEncrypt(plainText) {
var salt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SKCrypto.DEFAULT_SALT;
var iv = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : salt.substr(0, salt.length / 2);
var passPhrase = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : salt;
var iterations = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : salt.length;
var keySize = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : salt.length * 2 / 32;
return _cryptoJs2.default.AES.encrypt(plainText, _cryptoJs2.default.PBKDF2(passPhrase, _cryptoJs2.default.enc.Hex.parse(salt), { iterations: iterations, keySize: keySize }), { iv: _cryptoJs2.default.enc.Hex.parse(iv) }).ciphertext.toString(_cryptoJs2.default.enc.Base64);
}
}]);
return SKCrypto;
}();
SKCrypto.DEFAULT_SALT = '546869734973536978466F757242697453616C74466F725368616E654B696E67';
exports.default = SKCrypto;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNLQ3J5cHRvLmpzIl0sIm5hbWVzIjpbIlNLQ3J5cHRvIiwiY2lwaGVyVGV4dCIsInNhbHQiLCJERUZBVUxUX1NBTFQiLCJpdiIsInN1YnN0ciIsImxlbmd0aCIsInBhc3NQaHJhc2UiLCJpdGVyYXRpb25zIiwia2V5U2l6ZSIsIkFFUyIsImRlY3J5cHQiLCJsaWIiLCJDaXBoZXJQYXJhbXMiLCJjcmVhdGUiLCJjaXBoZXJ0ZXh0IiwiZW5jIiwiQmFzZTY0IiwicGFyc2UiLCJQQktERjIiLCJIZXgiLCJ0b1N0cmluZyIsIlV0ZjgiLCJwbGFpblRleHQiLCJlbmNyeXB0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBOzs7Ozs7OztJQUVxQkEsUTs7Ozs7OzsrQkFJREMsVSxFQUE2SjtBQUFBLFVBQWpKQyxJQUFpSix1RUFBMUlGLFNBQVNHLFlBQWlJO0FBQUEsVUFBbkhDLEVBQW1ILHVFQUE5R0YsS0FBS0csTUFBTCxDQUFZLENBQVosRUFBZUgsS0FBS0ksTUFBTCxHQUFjLENBQTdCLENBQThHO0FBQUEsVUFBN0VDLFVBQTZFLHVFQUFoRUwsSUFBZ0U7QUFBQSxVQUExRE0sVUFBMEQsdUVBQTdDTixLQUFLSSxNQUF3QztBQUFBLFVBQWhDRyxPQUFnQyx1RUFBdEJQLEtBQUtJLE1BQUwsR0FBYyxDQUFkLEdBQWtCLEVBQUk7O0FBQzdLLGFBQU8sbUJBQVNJLEdBQVQsQ0FBYUMsT0FBYixDQUNMLG1CQUFTQyxHQUFULENBQWFDLFlBQWIsQ0FBMEJDLE1BQTFCLENBQWlDO0FBQy9CQyxvQkFBWSxtQkFBU0MsR0FBVCxDQUFhQyxNQUFiLENBQW9CQyxLQUFwQixDQUEwQmpCLFVBQTFCO0FBRG1CLE9BQWpDLENBREssRUFJTCxtQkFBU2tCLE1BQVQsQ0FDRVosVUFERixFQUVFLG1CQUFTUyxHQUFULENBQWFJLEdBQWIsQ0FBaUJGLEtBQWpCLENBQXVCaEIsSUFBdkIsQ0FGRixFQUdFLEVBQUNNLFlBQVlBLFVBQWIsRUFBeUJDLFNBQVNBLE9BQWxDLEVBSEYsQ0FKSyxFQVFMLEVBQUNMLElBQUksbUJBQVNZLEdBQVQsQ0FBYUksR0FBYixDQUFpQkYsS0FBakIsQ0FBdUJkLEVBQXZCLENBQUwsRUFSSyxFQVE2QmlCLFFBUjdCLENBUXNDLG1CQUFTTCxHQUFULENBQWFNLElBUm5ELENBQVA7QUFTRDtBQWJEOzs7OytCQWVrQkMsUyxFQUE0SjtBQUFBLFVBQWpKckIsSUFBaUosdUVBQTFJRixTQUFTRyxZQUFpSTtBQUFBLFVBQW5IQyxFQUFtSCx1RUFBOUdGLEtBQUtHLE1BQUwsQ0FBWSxDQUFaLEVBQWVILEtBQUtJLE1BQUwsR0FBYyxDQUE3QixDQUE4RztBQUFBLFVBQTdFQyxVQUE2RSx1RUFBaEVMLElBQWdFO0FBQUEsVUFBMURNLFVBQTBELHVFQUE3Q04sS0FBS0ksTUFBd0M7QUFBQSxVQUFoQ0csT0FBZ0MsdUVBQXRCUCxLQUFLSSxNQUFMLEdBQWMsQ0FBZCxHQUFrQixFQUFJOztBQUM1SyxhQUFPLG1CQUFTSSxHQUFULENBQWFjLE9BQWIsQ0FDTEQsU0FESyxFQUVMLG1CQUFTSixNQUFULENBQ0VaLFVBREYsRUFFRSxtQkFBU1MsR0FBVCxDQUFhSSxHQUFiLENBQWlCRixLQUFqQixDQUF1QmhCLElBQXZCLENBRkYsRUFHRSxFQUFDTSxZQUFZQSxVQUFiLEVBQXlCQyxTQUFTQSxPQUFsQyxFQUhGLENBRkssRUFNTCxFQUFDTCxJQUFJLG1CQUFTWSxHQUFULENBQWFJLEdBQWIsQ0FBaUJGLEtBQWpCLENBQXVCZCxFQUF2QixDQUFMLEVBTkssRUFNNkJXLFVBTjdCLENBTXdDTSxRQU54QyxDQU1pRCxtQkFBU0wsR0FBVCxDQUFhQyxNQU45RCxDQUFQO0FBT0Q7Ozs7OztBQXhCa0JqQixRLENBRVpHLFksR0FBZSxrRTtrQkFGSEgsUSIsImZpbGUiOiJTS0NyeXB0by5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDcnlwdG9KUyBmcm9tICdjcnlwdG8tanMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTS0NyeXB0byB7XG4gIC8vVGhpc0lzU2l4Rm91ckJpdFNhbHRGb3JTaGFuZUtpbmdcbiAgc3RhdGljIERFRkFVTFRfU0FMVCA9ICc1NDY4Njk3MzQ5NzM1MzY5Nzg0NjZGNzU3MjQyNjk3NDUzNjE2Qzc0NDY2RjcyNTM2ODYxNkU2NTRCNjk2RTY3JztcblxuICBzdGF0aWMgYWVzRGVjcnlwdChjaXBoZXJUZXh0LCBzYWx0ID0gU0tDcnlwdG8uREVGQVVMVF9TQUxULCBpdiA9IHNhbHQuc3Vic3RyKDAsIHNhbHQubGVuZ3RoIC8gMiksIHBhc3NQaHJhc2UgPSBzYWx0LCBpdGVyYXRpb25zID0gc2FsdC5sZW5ndGgsIGtleVNpemUgPSBzYWx0Lmxlbmd0aCAqIDIgLyAzMikge1xuICAgIHJldHVybiBDcnlwdG9KUy5BRVMuZGVjcnlwdChcbiAgICAgIENyeXB0b0pTLmxpYi5DaXBoZXJQYXJhbXMuY3JlYXRlKHtcbiAgICAgICAgY2lwaGVydGV4dDogQ3J5cHRvSlMuZW5jLkJhc2U2NC5wYXJzZShjaXBoZXJUZXh0KVxuICAgICAgfSksXG4gICAgICBDcnlwdG9KUy5QQktERjIoXG4gICAgICAgIHBhc3NQaHJhc2UsXG4gICAgICAgIENyeXB0b0pTLmVuYy5IZXgucGFyc2Uoc2FsdCksXG4gICAgICAgIHtpdGVyYXRpb25zOiBpdGVyYXRpb25zLCBrZXlTaXplOiBrZXlTaXplfSksXG4gICAgICB7aXY6IENyeXB0b0pTLmVuYy5IZXgucGFyc2UoaXYpfSkudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLlV0ZjgpO1xuICB9XG5cbiAgc3RhdGljIGFlc0VuY3J5cHQocGxhaW5UZXh0LCBzYWx0ID0gU0tDcnlwdG8uREVGQVVMVF9TQUxULCBpdiA9IHNhbHQuc3Vic3RyKDAsIHNhbHQubGVuZ3RoIC8gMiksIHBhc3NQaHJhc2UgPSBzYWx0LCBpdGVyYXRpb25zID0gc2FsdC5sZW5ndGgsIGtleVNpemUgPSBzYWx0Lmxlbmd0aCAqIDIgLyAzMikge1xuICAgIHJldHVybiBDcnlwdG9KUy5BRVMuZW5jcnlwdChcbiAgICAgIHBsYWluVGV4dCxcbiAgICAgIENyeXB0b0pTLlBCS0RGMihcbiAgICAgICAgcGFzc1BocmFzZSxcbiAgICAgICAgQ3J5cHRvSlMuZW5jLkhleC5wYXJzZShzYWx0KSxcbiAgICAgICAge2l0ZXJhdGlvbnM6IGl0ZXJhdGlvbnMsIGtleVNpemU6IGtleVNpemV9KSxcbiAgICAgIHtpdjogQ3J5cHRvSlMuZW5jLkhleC5wYXJzZShpdil9KS5jaXBoZXJ0ZXh0LnRvU3RyaW5nKENyeXB0b0pTLmVuYy5CYXNlNjQpO1xuICB9XG59XG4iXX0=