|
|
|
@ -1,345 +1,242 @@
|
|
|
|
|
// 模块导出的自执行函数,用于定义模块的导出内容以及处理模块的依赖加载等逻辑
|
|
|
|
|
module.exports = (function () {
|
|
|
|
|
var __MODS__ = {};
|
|
|
|
|
// 定义模块的函数,用于创建一个模块的相关信息对象,包括模块状态、执行函数、依赖等
|
|
|
|
|
var __DEFINE__ = function (modId, func, req) {
|
|
|
|
|
var m = { exports: {}, _tempexports: {} };
|
|
|
|
|
__MODS__[modId] = { status: 0, func: func, req: req, m: m };
|
|
|
|
|
};
|
|
|
|
|
// 用于加载模块的函数,如果模块未加载则通过原生的require加载,若已定义但未执行则执行模块函数并返回其导出内容
|
|
|
|
|
var __REQUIRE__ = function (modId, source) {
|
|
|
|
|
if (!__MODS__[modId]) return require(source);
|
|
|
|
|
if (!__MODS__[modId].status) {
|
|
|
|
|
var m = __MODS__[modId].m;
|
|
|
|
|
m._exports = m._tempexports;
|
|
|
|
|
var desp = Object.getOwnPropertyDescriptor(m, "exports");
|
|
|
|
|
if (desp && desp.configurable)
|
|
|
|
|
Object.defineProperty(m, "exports", {
|
|
|
|
|
set: function (val) {
|
|
|
|
|
if (typeof val === "object" && val!== m._exports) {
|
|
|
|
|
m._exports.__proto__ = val.__proto__;
|
|
|
|
|
Object.keys(val).forEach(function (k) {
|
|
|
|
|
m._exports[k] = val[k];
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
m._tempexports = val;
|
|
|
|
|
},
|
|
|
|
|
get: function () {
|
|
|
|
|
return m._tempexports;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
__MODS__[modId].status = 1;
|
|
|
|
|
__MODS__[modId].func(__MODS__[modId].req, m, m.exports);
|
|
|
|
|
}
|
|
|
|
|
return __MODS__[modId].m.exports;
|
|
|
|
|
};
|
|
|
|
|
// 处理通配符导入的模块,如果模块是ES模块则直接返回,否则创建一个新对象并将原对象的属性复制过去,同时添加默认属性指向原对象
|
|
|
|
|
var __REQUIRE_WILDCARD__ = function (obj) {
|
|
|
|
|
if (obj && obj.__esModule) {
|
|
|
|
|
return obj;
|
|
|
|
|
} else {
|
|
|
|
|
var newObj = {};
|
|
|
|
|
if (obj!= null) {
|
|
|
|
|
for (var k in obj) {
|
|
|
|
|
if (Object.prototype.hasOwnProperty.call(obj, k)) newObj[k] = obj[k];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
newObj.default = obj;
|
|
|
|
|
return newObj;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
// 获取模块默认导出的函数,如果模块是ES模块则返回其default属性,否则直接返回模块对象
|
|
|
|
|
var __REQUIRE_DEFAULT__ = function (obj) {
|
|
|
|
|
return obj && obj.__esModule? obj.default : obj;
|
|
|
|
|
};
|
|
|
|
|
module.exports = (function() {
|
|
|
|
|
var __MODS__ = {};
|
|
|
|
|
var __DEFINE__ = function(modId, func, req) { var m = { exports: {}, _tempexports: {} }; __MODS__[modId] = { status: 0, func: func, req: req, m: m }; };
|
|
|
|
|
var __REQUIRE__ = function(modId, source) { if(!__MODS__[modId]) return require(source); if(!__MODS__[modId].status) { var m = __MODS__[modId].m; m._exports = m._tempexports; var desp = Object.getOwnPropertyDescriptor(m, "exports"); if (desp && desp.configurable) Object.defineProperty(m, "exports", { set: function (val) { if(typeof val === "object" && val !== m._exports) { m._exports.__proto__ = val.__proto__; Object.keys(val).forEach(function (k) { m._exports[k] = val[k]; }); } m._tempexports = val }, get: function () { return m._tempexports; } }); __MODS__[modId].status = 1; __MODS__[modId].func(__MODS__[modId].req, m, m.exports); } return __MODS__[modId].m.exports; };
|
|
|
|
|
var __REQUIRE_WILDCARD__ = function(obj) { if(obj && obj.__esModule) { return obj; } else { var newObj = {}; if(obj != null) { for(var k in obj) { if (Object.prototype.hasOwnProperty.call(obj, k)) newObj[k] = obj[k]; } } newObj.default = obj; return newObj; } };
|
|
|
|
|
var __REQUIRE_DEFAULT__ = function(obj) { return obj && obj.__esModule ? obj.default : obj; };
|
|
|
|
|
__DEFINE__(1648886413910, function(require, module, exports) {
|
|
|
|
|
;(function (root, factory, undef) {
|
|
|
|
|
if (typeof exports === "object") {
|
|
|
|
|
// CommonJS
|
|
|
|
|
module.exports = exports = factory(require("./core"), require("./x64-core"), require("./lib-typedarrays"), require("./enc-utf16"), require("./enc-base64"), require("./enc-base64url"), require("./md5"), require("./sha1"), require("./sha256"), require("./sha224"), require("./sha512"), require("./sha384"), require("./sha3"), require("./ripemd160"), require("./hmac"), require("./pbkdf2"), require("./evpkdf"), require("./cipher-core"), require("./mode-cfb"), require("./mode-ctr"), require("./mode-ctr-gladman"), require("./mode-ofb"), require("./mode-ecb"), require("./pad-ansix923"), require("./pad-iso10126"), require("./pad-iso97971"), require("./pad-zeropadding"), require("./pad-nopadding"), require("./format-hex"), require("./aes"), require("./tripledes"), require("./rc4"), require("./rabbit"), require("./rabbit-legacy"));
|
|
|
|
|
}
|
|
|
|
|
else if (typeof define === "function" && define.amd) {
|
|
|
|
|
// AMD
|
|
|
|
|
define(["./core", "./x64-core", "./lib-typedarrays", "./enc-utf16", "./enc-base64", "./enc-base64url", "./md5", "./sha1", "./sha256", "./sha224", "./sha512", "./sha384", "./sha3", "./ripemd160", "./hmac", "./pbkdf2", "./evpkdf", "./cipher-core", "./mode-cfb", "./mode-ctr", "./mode-ctr-gladman", "./mode-ofb", "./mode-ecb", "./pad-ansix923", "./pad-iso10126", "./pad-iso97971", "./pad-zeropadding", "./pad-nopadding", "./format-hex", "./aes", "./tripledes", "./rc4", "./rabbit", "./rabbit-legacy"], factory);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
// Global (browser)
|
|
|
|
|
root.CryptoJS = factory(root.CryptoJS);
|
|
|
|
|
}
|
|
|
|
|
}(this, function (CryptoJS) {
|
|
|
|
|
|
|
|
|
|
// 定义模块ID为1648886413910的模块,它主要处理不同环境下(CommonJS、AMD、全局浏览器环境)CryptoJS的导出逻辑
|
|
|
|
|
__DEFINE__(1648886413910, function (require, module, exports) {
|
|
|
|
|
// 立即执行函数,根据不同的模块环境(CommonJS、AMD、全局浏览器环境)来设置CryptoJS的导出方式
|
|
|
|
|
(function (root, factory, undef) {
|
|
|
|
|
if (typeof exports === "object") {
|
|
|
|
|
// CommonJS环境下,将factory函数执行的结果赋值给module.exports和exports,factory函数需要传入多个依赖模块
|
|
|
|
|
module.exports = exports = factory(
|
|
|
|
|
require("./core"),
|
|
|
|
|
require("./x64-core"),
|
|
|
|
|
require("./lib-typedarrays"),
|
|
|
|
|
require("./enc-utf16"),
|
|
|
|
|
require("./enc-base64"),
|
|
|
|
|
require("./enc-base64url"),
|
|
|
|
|
require("./md5"),
|
|
|
|
|
require("./sha1"),
|
|
|
|
|
require("./sha256"),
|
|
|
|
|
require("./sha224"),
|
|
|
|
|
require("./sha512"),
|
|
|
|
|
require("./sha384"),
|
|
|
|
|
require("./sha3"),
|
|
|
|
|
require("./ripemd160"),
|
|
|
|
|
require("./hmac"),
|
|
|
|
|
require("./pbkdf2"),
|
|
|
|
|
require("./evpkdf"),
|
|
|
|
|
require("./cipher-core"),
|
|
|
|
|
require("./mode-cfb"),
|
|
|
|
|
require("./mode-ctr"),
|
|
|
|
|
require("./mode-ctr-gladman"),
|
|
|
|
|
require("./mode-ofb"),
|
|
|
|
|
require("./mode-ecb"),
|
|
|
|
|
require("./pad-ansix923"),
|
|
|
|
|
require("./pad-iso10126"),
|
|
|
|
|
require("./pad-iso97971"),
|
|
|
|
|
require("./pad-zeropadding"),
|
|
|
|
|
require("./pad-nopadding"),
|
|
|
|
|
require("./format-hex"),
|
|
|
|
|
require("./aes"),
|
|
|
|
|
require("./tripledes"),
|
|
|
|
|
require("./rc4"),
|
|
|
|
|
require("./rabbit"),
|
|
|
|
|
require("./rabbit-legacy")
|
|
|
|
|
);
|
|
|
|
|
} else if (typeof define === "function" && define.amd) {
|
|
|
|
|
// AMD环境下,使用define函数定义模块,传入依赖数组和factory函数
|
|
|
|
|
define([
|
|
|
|
|
"./core",
|
|
|
|
|
"./x64-core",
|
|
|
|
|
"./lib-typedarrays",
|
|
|
|
|
"./enc-utf16",
|
|
|
|
|
"./enc-base64",
|
|
|
|
|
"./enc-base64url",
|
|
|
|
|
"./md5",
|
|
|
|
|
"./sha1",
|
|
|
|
|
"./sha256",
|
|
|
|
|
"./sha224",
|
|
|
|
|
"./sha512",
|
|
|
|
|
"./sha384",
|
|
|
|
|
"./sha3",
|
|
|
|
|
"./ripemd160",
|
|
|
|
|
"./hmac",
|
|
|
|
|
"./pbkdf2",
|
|
|
|
|
"./evpkdf",
|
|
|
|
|
"./cipher-core",
|
|
|
|
|
"./mode-cfb",
|
|
|
|
|
"./mode-ctr",
|
|
|
|
|
"./mode-ctr-gladman",
|
|
|
|
|
"./mode-ofb",
|
|
|
|
|
"./mode-ecb",
|
|
|
|
|
"./pad-ansix923",
|
|
|
|
|
"./pad-iso10126",
|
|
|
|
|
"./pad-iso97971",
|
|
|
|
|
"./pad-zeropadding",
|
|
|
|
|
"./pad-nopadding",
|
|
|
|
|
"./format-hex",
|
|
|
|
|
"./aes",
|
|
|
|
|
"./tripledes",
|
|
|
|
|
"./rc4",
|
|
|
|
|
"./rabbit",
|
|
|
|
|
"./rabbit-legacy"
|
|
|
|
|
], factory);
|
|
|
|
|
} else {
|
|
|
|
|
// 全局(浏览器)环境下,将factory函数传入全局的CryptoJS(如果存在)执行,并将结果赋值给全局的CryptoJS
|
|
|
|
|
root.CryptoJS = factory(root.CryptoJS);
|
|
|
|
|
}
|
|
|
|
|
}(this, function (CryptoJS) {
|
|
|
|
|
return CryptoJS;
|
|
|
|
|
}));
|
|
|
|
|
}, function (modId) {
|
|
|
|
|
var map = {
|
|
|
|
|
"./core": 1648886413911,
|
|
|
|
|
"./x64-core": 1648886413912,
|
|
|
|
|
"./lib-typedarrays": 1648886413913,
|
|
|
|
|
"./enc-utf16": 1648886413914,
|
|
|
|
|
"./enc-base64": 1648886413915,
|
|
|
|
|
"./enc-base64url": 1648886413916,
|
|
|
|
|
"./md5": 1648886413917,
|
|
|
|
|
"./sha1": 1648886413918,
|
|
|
|
|
"./sha256": 1648886413919,
|
|
|
|
|
"./sha224": 1648886413920,
|
|
|
|
|
"./sha512": 1648886413921,
|
|
|
|
|
"./sha384": 1648886413922,
|
|
|
|
|
"./sha3": 1648886413923,
|
|
|
|
|
"./ripemd160": 1648886413924,
|
|
|
|
|
"./hmac": 1648886413925,
|
|
|
|
|
"./pbkdf2": 1648886413926,
|
|
|
|
|
"./evpkdf": 1648886413927,
|
|
|
|
|
"./cipher-core": 1648886413928,
|
|
|
|
|
"./mode-cfb": 1648886413929,
|
|
|
|
|
"./mode-ctr": 1648886413930,
|
|
|
|
|
"./mode-ctr-gladman": 1648886413931,
|
|
|
|
|
"./mode-ofb": 1648886413932,
|
|
|
|
|
"./mode-ecb": 1648886413933,
|
|
|
|
|
"./pad-ansix923": 1648886413934,
|
|
|
|
|
"./pad-iso10126": 1648886413935,
|
|
|
|
|
"./pad-iso97971": 1648886413936,
|
|
|
|
|
"./pad-zeropadding": 1648886413937,
|
|
|
|
|
"./pad-nopadding": 1648886413938,
|
|
|
|
|
"./format-hex": 1648886413939,
|
|
|
|
|
"./aes": 1648886413940,
|
|
|
|
|
"./tripledes": 1648886413941,
|
|
|
|
|
"./rc4": 1648886413942,
|
|
|
|
|
"./rabbit": 1648886413943,
|
|
|
|
|
"./rabbit-legacy": 1648886413944
|
|
|
|
|
};
|
|
|
|
|
return __REQUIRE__(map[modId], modId);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 定义模块ID为1648886413911的模块,主要处理CryptoJS核心部分在不同环境下的导出逻辑
|
|
|
|
|
__DEFINE__(1648886413911, function (require, module, exports) {
|
|
|
|
|
// 立即执行函数,根据不同的模块环境(CommonJS、AMD、全局浏览器环境)来设置CryptoJS核心部分的导出方式
|
|
|
|
|
(function (root, factory) {
|
|
|
|
|
if (typeof exports === "object") {
|
|
|
|
|
// CommonJS环境下,将factory函数执行的结果赋值给module.exports和exports
|
|
|
|
|
module.exports = exports = factory();
|
|
|
|
|
} else if (typeof define === "function" && define.amd) {
|
|
|
|
|
// AMD环境下,使用define函数定义模块,传入空的依赖数组和factory函数
|
|
|
|
|
define([], factory);
|
|
|
|
|
} else {
|
|
|
|
|
// 全局(浏览器)环境下,将factory函数传入全局的CryptoJS(如果存在)执行,并将结果赋值给全局的CryptoJS
|
|
|
|
|
root.CryptoJS = factory();
|
|
|
|
|
}
|
|
|
|
|
}(this, function () {
|
|
|
|
|
/*globals window, global, require*/
|
|
|
|
|
/**
|
|
|
|
|
* CryptoJS核心组件相关代码
|
|
|
|
|
*/
|
|
|
|
|
var CryptoJS = CryptoJS || (function (Math, undefined) {
|
|
|
|
|
var crypto;
|
|
|
|
|
// 尝试从浏览器的window对象获取crypto属性作为加密相关的原生对象(适用于普通浏览器环境)
|
|
|
|
|
if (typeof window!== 'undefined' && window.crypto) {
|
|
|
|
|
crypto = window.crypto;
|
|
|
|
|
}
|
|
|
|
|
// 尝试从浏览器的web worker的self对象获取crypto属性作为加密相关的原生对象(适用于web worker环境)
|
|
|
|
|
if (typeof self!== 'undefined' && self.crypto) {
|
|
|
|
|
crypto = self.crypto;
|
|
|
|
|
}
|
|
|
|
|
// 尝试从全局的globalThis对象获取crypto属性作为加密相关的原生对象(适用于新的全局环境规范)
|
|
|
|
|
if (typeof globalThis!== 'undefined' && globalThis.crypto) {
|
|
|
|
|
crypto = globalThis.crypto;
|
|
|
|
|
}
|
|
|
|
|
// 尝试从浏览器的window对象获取msCrypto属性作为加密相关的原生对象(适用于IE 11等旧浏览器的实验性支持)
|
|
|
|
|
if (!crypto && typeof window!== 'undefined' && window.msCrypto) {
|
|
|
|
|
crypto = window.msCrypto;
|
|
|
|
|
}
|
|
|
|
|
// 尝试从NodeJS的global对象获取crypto属性作为加密相关的原生对象(适用于NodeJS环境)
|
|
|
|
|
if (!crypto && typeof global!== 'undefined' && global.crypto) {
|
|
|
|
|
crypto = global.crypto;
|
|
|
|
|
}
|
|
|
|
|
// 尝试通过NodeJS的require函数导入'crypto'模块作为加密相关的原生对象(适用于NodeJS环境)
|
|
|
|
|
if (!crypto && typeof require === 'function') {
|
|
|
|
|
try {
|
|
|
|
|
crypto = require('crypto');
|
|
|
|
|
} catch (err) {}
|
|
|
|
|
}
|
|
|
|
|
return CryptoJS;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* 生成密码学安全的伪随机数的函数
|
|
|
|
|
* 由于Math.random()在密码学上不安全,所以需要使用原生加密模块提供的方法来生成
|
|
|
|
|
*/
|
|
|
|
|
var cryptoSecureRandomInt = function () {
|
|
|
|
|
if (crypto) {
|
|
|
|
|
// 如果存在crypto对象且有getRandomValues方法(适用于浏览器环境),尝试使用该方法生成随机数
|
|
|
|
|
if (typeof crypto.getRandomValues === 'function') {
|
|
|
|
|
try {
|
|
|
|
|
return crypto.getRandomValues(new Uint32Array(1))[0];
|
|
|
|
|
} catch (err) {}
|
|
|
|
|
}
|
|
|
|
|
// 如果存在crypto对象且有randomBytes方法(适用于NodeJS环境),尝试使用该方法生成随机数
|
|
|
|
|
if (typeof crypto.randomBytes === 'function') {
|
|
|
|
|
try {
|
|
|
|
|
return crypto.randomBytes(4).readInt32LE();
|
|
|
|
|
} catch (err) {}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 如果无法通过上述方式获取安全的随机数,则抛出错误
|
|
|
|
|
throw new Error('Native crypto module could not be used to get secure random number.');
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// 本地对Object.create的 polyfill实现,如果原生不存在Object.create方法则使用以下函数替代
|
|
|
|
|
var create = Object.create || (function () {
|
|
|
|
|
function F() {}
|
|
|
|
|
return function (obj) {
|
|
|
|
|
var subtype;
|
|
|
|
|
F.prototype = obj;
|
|
|
|
|
subtype = new F();
|
|
|
|
|
F.prototype = null;
|
|
|
|
|
return subtype;
|
|
|
|
|
};
|
|
|
|
|
}());
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* CryptoJS的命名空间对象
|
|
|
|
|
*/
|
|
|
|
|
var C = {};
|
|
|
|
|
/**
|
|
|
|
|
* 库的命名空间对象,用于存放库相关的属性和方法等
|
|
|
|
|
*/
|
|
|
|
|
var C_lib = C.lib = {};
|
|
|
|
|
/**
|
|
|
|
|
* 作为原型继承的基础对象,提供了一系列用于创建、扩展、初始化、混合属性以及克隆对象等方法
|
|
|
|
|
*/
|
|
|
|
|
var Base = C_lib.Base = (function () {
|
|
|
|
|
return {
|
|
|
|
|
/**
|
|
|
|
|
* 创建一个继承自当前对象的新对象,并可传入要覆盖或添加的属性对象
|
|
|
|
|
* @param {Object} overrides 要复制到新对象的属性对象
|
|
|
|
|
* @return {Object} 新创建的继承了当前对象的对象
|
|
|
|
|
* @example
|
|
|
|
|
* var MyType = CryptoJS.lib.Base.extend({
|
|
|
|
|
* field: 'value',
|
|
|
|
|
* method: function () {}
|
|
|
|
|
* });
|
|
|
|
|
*/
|
|
|
|
|
extend: function (overrides) {
|
|
|
|
|
// 创建一个继承自当前对象的新对象(通过Object.create或者polyfill的方式)
|
|
|
|
|
var subtype = create(this);
|
|
|
|
|
// 如果有要覆盖或添加的属性,将其混入新对象
|
|
|
|
|
if (overrides) {
|
|
|
|
|
subtype.mixIn(overrides);
|
|
|
|
|
}
|
|
|
|
|
// 如果新对象没有自定义的init方法或者其init方法与父对象的init方法相同,则创建一个默认的init方法,用于调用父对象的init方法
|
|
|
|
|
if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {
|
|
|
|
|
subtype.init = function () {
|
|
|
|
|
subtype.$super.init.apply(this, arguments);
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
// 设置新对象的init方法的原型为新对象本身,以便在init方法中可以正确访问到新对象的属性等
|
|
|
|
|
subtype.init.prototype = subtype;
|
|
|
|
|
// 保存对父对象的引用,方便在新对象中调用父对象的方法等
|
|
|
|
|
subtype.$super = this;
|
|
|
|
|
return subtype;
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* 扩展当前对象并执行init方法,传入的参数会传递给init方法,返回新创建的对象
|
|
|
|
|
* @return {Object} 新创建并初始化后的对象
|
|
|
|
|
* @example
|
|
|
|
|
* var instance = MyType.create();
|
|
|
|
|
*/
|
|
|
|
|
create: function () {
|
|
|
|
|
var instance = this.extend();
|
|
|
|
|
instance.init.apply(instance, arguments);
|
|
|
|
|
return instance;
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* 初始化新创建的对象,可在子类中重写此方法来添加对象创建时的逻辑
|
|
|
|
|
* @example
|
|
|
|
|
* var MyType = CryptoJS.lib.Base.extend({
|
|
|
|
|
* init: function () {
|
|
|
|
|
* //...
|
|
|
|
|
* }
|
|
|
|
|
* });
|
|
|
|
|
*/
|
|
|
|
|
init: function () { },
|
|
|
|
|
/**
|
|
|
|
|
* 将传入的属性对象的属性复制到当前对象中
|
|
|
|
|
* @param {Object} properties 要混入的属性对象
|
|
|
|
|
* @example
|
|
|
|
|
* MyType.mixIn({
|
|
|
|
|
* field: 'value'
|
|
|
|
|
* });
|
|
|
|
|
*/
|
|
|
|
|
mixIn: function (properties) {
|
|
|
|
|
for (var propertyName in properties) {
|
|
|
|
|
if (properties.hasOwnProperty(propertyName)) {
|
|
|
|
|
this[propertyName] = properties[propertyName];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}));
|
|
|
|
|
}, function(modId) {var map = {"./core":1648886413911,"./x64-core":1648886413912,"./lib-typedarrays":1648886413913,"./enc-utf16":1648886413914,"./enc-base64":1648886413915,"./enc-base64url":1648886413916,"./md5":1648886413917,"./sha1":1648886413918,"./sha256":1648886413919,"./sha224":1648886413920,"./sha512":1648886413921,"./sha384":1648886413922,"./sha3":1648886413923,"./ripemd160":1648886413924,"./hmac":1648886413925,"./pbkdf2":1648886413926,"./evpkdf":1648886413927,"./cipher-core":1648886413928,"./mode-cfb":1648886413929,"./mode-ctr":1648886413930,"./mode-ctr-gladman":1648886413931,"./mode-ofb":1648886413932,"./mode-ecb":1648886413933,"./pad-ansix923":1648886413934,"./pad-iso10126":1648886413935,"./pad-iso97971":1648886413936,"./pad-zeropadding":1648886413937,"./pad-nopadding":1648886413938,"./format-hex":1648886413939,"./aes":1648886413940,"./tripledes":1648886413941,"./rc4":1648886413942,"./rabbit":1648886413943,"./rabbit-legacy":1648886413944}; return __REQUIRE__(map[modId], modId); })
|
|
|
|
|
__DEFINE__(1648886413911, function(require, module, exports) {
|
|
|
|
|
;(function (root, factory) {
|
|
|
|
|
if (typeof exports === "object") {
|
|
|
|
|
// CommonJS
|
|
|
|
|
module.exports = exports = factory();
|
|
|
|
|
}
|
|
|
|
|
else if (typeof define === "function" && define.amd) {
|
|
|
|
|
// AMD
|
|
|
|
|
define([], factory);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
// Global (browser)
|
|
|
|
|
root.CryptoJS = factory();
|
|
|
|
|
}
|
|
|
|
|
}(this, function () {
|
|
|
|
|
|
|
|
|
|
/*globals window, global, require*/
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* CryptoJS core components.
|
|
|
|
|
*/
|
|
|
|
|
var CryptoJS = CryptoJS || (function (Math, undefined) {
|
|
|
|
|
|
|
|
|
|
var crypto;
|
|
|
|
|
|
|
|
|
|
// Native crypto from window (Browser)
|
|
|
|
|
if (typeof window !== 'undefined' && window.crypto) {
|
|
|
|
|
crypto = window.crypto;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Native crypto in web worker (Browser)
|
|
|
|
|
if (typeof self !== 'undefined' && self.crypto) {
|
|
|
|
|
crypto = self.crypto;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Native crypto from worker
|
|
|
|
|
if (typeof globalThis !== 'undefined' && globalThis.crypto) {
|
|
|
|
|
crypto = globalThis.crypto;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Native (experimental IE 11) crypto from window (Browser)
|
|
|
|
|
if (!crypto && typeof window !== 'undefined' && window.msCrypto) {
|
|
|
|
|
crypto = window.msCrypto;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Native crypto from global (NodeJS)
|
|
|
|
|
if (!crypto && typeof global !== 'undefined' && global.crypto) {
|
|
|
|
|
crypto = global.crypto;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Native crypto import via require (NodeJS)
|
|
|
|
|
if (!crypto && typeof require === 'function') {
|
|
|
|
|
try {
|
|
|
|
|
crypto = require('crypto');
|
|
|
|
|
} catch (err) {}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Cryptographically secure pseudorandom number generator
|
|
|
|
|
*
|
|
|
|
|
* As Math.random() is cryptographically not safe to use
|
|
|
|
|
*/
|
|
|
|
|
var cryptoSecureRandomInt = function () {
|
|
|
|
|
if (crypto) {
|
|
|
|
|
// Use getRandomValues method (Browser)
|
|
|
|
|
if (typeof crypto.getRandomValues === 'function') {
|
|
|
|
|
try {
|
|
|
|
|
return crypto.getRandomValues(new Uint32Array(1))[0];
|
|
|
|
|
} catch (err) {}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Use randomBytes method (NodeJS)
|
|
|
|
|
if (typeof crypto.randomBytes === 'function') {
|
|
|
|
|
try {
|
|
|
|
|
return crypto.randomBytes(4).readInt32LE();
|
|
|
|
|
} catch (err) {}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
throw new Error('Native crypto module could not be used to get secure random number.');
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Local polyfill of Object.create
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
var create = Object.create || (function () {
|
|
|
|
|
function F() {}
|
|
|
|
|
|
|
|
|
|
return function (obj) {
|
|
|
|
|
var subtype;
|
|
|
|
|
|
|
|
|
|
F.prototype = obj;
|
|
|
|
|
|
|
|
|
|
subtype = new F();
|
|
|
|
|
|
|
|
|
|
F.prototype = null;
|
|
|
|
|
|
|
|
|
|
return subtype;
|
|
|
|
|
};
|
|
|
|
|
}());
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* CryptoJS namespace.
|
|
|
|
|
*/
|
|
|
|
|
var C = {};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Library namespace.
|
|
|
|
|
*/
|
|
|
|
|
var C_lib = C.lib = {};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Base object for prototypal inheritance.
|
|
|
|
|
*/
|
|
|
|
|
var Base = C_lib.Base = (function () {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
/**
|
|
|
|
|
* Creates a new object that inherits from this object.
|
|
|
|
|
*
|
|
|
|
|
* @param {Object} overrides Properties to copy into the new object.
|
|
|
|
|
*
|
|
|
|
|
* @return {Object} The new object.
|
|
|
|
|
*
|
|
|
|
|
* @static
|
|
|
|
|
*
|
|
|
|
|
* @example
|
|
|
|
|
*
|
|
|
|
|
* var MyType = CryptoJS.lib.Base.extend({
|
|
|
|
|
* field: 'value',
|
|
|
|
|
*
|
|
|
|
|
* method: function () {
|
|
|
|
|
* }
|
|
|
|
|
* });
|
|
|
|
|
*/
|
|
|
|
|
extend: function (overrides) {
|
|
|
|
|
// Spawn
|
|
|
|
|
var subtype = create(this);
|
|
|
|
|
|
|
|
|
|
// Augment
|
|
|
|
|
if (overrides) {
|
|
|
|
|
subtype.mixIn(overrides);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Create default initializer
|
|
|
|
|
if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {
|
|
|
|
|
subtype.init = function () {
|
|
|
|
|
subtype.$super.init.apply(this, arguments);
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Initializer's prototype is the subtype object
|
|
|
|
|
subtype.init.prototype = subtype;
|
|
|
|
|
|
|
|
|
|
// Reference supertype
|
|
|
|
|
subtype.$super = this;
|
|
|
|
|
|
|
|
|
|
return subtype;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Extends this object and runs the init method.
|
|
|
|
|
* Arguments to create() will be passed to init().
|
|
|
|
|
*
|
|
|
|
|
* @return {Object} The new object.
|
|
|
|
|
*
|
|
|
|
|
* @static
|
|
|
|
|
*
|
|
|
|
|
* @example
|
|
|
|
|
*
|
|
|
|
|
* var instance = MyType.create();
|
|
|
|
|
*/
|
|
|
|
|
create: function () {
|
|
|
|
|
var instance = this.extend();
|
|
|
|
|
instance.init.apply(instance, arguments);
|
|
|
|
|
|
|
|
|
|
return instance;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Initializes a newly created object.
|
|
|
|
|
* Override this method to add some logic when your objects are created.
|
|
|
|
|
*
|
|
|
|
|
* @example
|
|
|
|
|
*
|
|
|
|
|
* var MyType = CryptoJS.lib.Base.extend({
|
|
|
|
|
* init: function () {
|
|
|
|
|
* // ...
|
|
|
|
|
* }
|
|
|
|
|
* });
|
|
|
|
|
*/
|
|
|
|
|
init: function () {
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Copies properties into this object.
|
|
|
|
|
*
|
|
|
|
|
* @param {Object} properties The properties to mix in.
|
|
|
|
|
*
|
|
|
|
|
* @example
|
|
|
|
|
*
|
|
|
|
|
* MyType.mixIn({
|
|
|
|
|
* field: 'value'
|
|
|
|
|
* });
|
|
|
|
|
*/
|
|
|
|
|
mixIn: function (properties) {
|
|
|
|
|
for (var propertyName in properties) {
|
|
|
|
|
if (properties.hasOwnProperty(propertyName)) {
|
|
|
|
|
this[propertyName] = properties[propertyName];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// IE won't copy toString using the loop above
|
|
|
|
|
if (properties.hasOwnProperty('toString')) {
|
|
|
|
|