123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- ;(function (root, factory, undef) {
- if (typeof exports === "object") {
-
- module.exports = exports = factory(require("./core"), require("./sha1"), require("./hmac"));
- }
- else if (typeof define === "function" && define.amd) {
-
- define(["./core", "./sha1", "./hmac"], factory);
- }
- else {
-
- factory(root.CryptoJS);
- }
- }(this, function (CryptoJS) {
- (function () {
-
- var C = CryptoJS;
- var C_lib = C.lib;
- var Base = C_lib.Base;
- var WordArray = C_lib.WordArray;
- var C_algo = C.algo;
- var MD5 = C_algo.MD5;
-
- var EvpKDF = C_algo.EvpKDF = Base.extend({
-
- cfg: Base.extend({
- keySize: 128/32,
- hasher: MD5,
- iterations: 1
- }),
-
- init: function (cfg) {
- this.cfg = this.cfg.extend(cfg);
- },
-
- compute: function (password, salt) {
- var block;
-
- var cfg = this.cfg;
-
- var hasher = cfg.hasher.create();
-
- var derivedKey = WordArray.create();
-
- var derivedKeyWords = derivedKey.words;
- var keySize = cfg.keySize;
- var iterations = cfg.iterations;
-
- while (derivedKeyWords.length < keySize) {
- if (block) {
- hasher.update(block);
- }
- block = hasher.update(password).finalize(salt);
- hasher.reset();
-
- for (var i = 1; i < iterations; i++) {
- block = hasher.finalize(block);
- hasher.reset();
- }
- derivedKey.concat(block);
- }
- derivedKey.sigBytes = keySize * 4;
- return derivedKey;
- }
- });
-
- C.EvpKDF = function (password, salt, cfg) {
- return EvpKDF.create(cfg).compute(password, salt);
- };
- }());
- return CryptoJS.EvpKDF;
- }));
|