code: function (password, salt) {
              // Shortcut
              var cfg = this.cfg;
  
              // Init hasher
              var hasher = cfg.hasher.create();
  
              // Initial values
              var derivedKey = WordArray.create();
  
              // Shortcuts
              var derivedKeyWords = derivedKey.words;
              var keySize = cfg.keySize;
              var iterations = cfg.iterations;
  
              // Generate key
              while (derivedKeyWords.length < keySize) {
                  if (block) {
                      hasher.update(block);
                  }
                  var block = hasher.update(password).finalize(salt);
                  hasher.reset();
  
                  // Iterations
                  for (var i = 1; i < iterations; i++) {
                      block = hasher.finalize(block);
                      hasher.reset();
                  }
  
                  derivedKey.concat(block);
              }
              derivedKey.sigBytes = keySize * 4;
  
              return derivedKey;
          }
docs: Derives a key from a password.
  
  @param {WordArray|string} password The password.
  @param {WordArray|string} salt A salt.
  
  @return {WordArray} The derived key.
  
  @example
  
  var key = kdf.compute(password, salt);