build/authorify.js
function evpBytesToKey(password, salt, dkLen) {
  var digests = [md5(password + salt)];
  for(var length = 16, i = 1; length < dkLen; ++i, length += 16) {
    digests.push(md5(digests[i - 1] + password + salt));
  }
  return digests.join('').substr(0, dkLen);
}
function evpBytesToKey(password, salt, dkLen) {
  var digests = [md5(password + salt)];
  for(var length = 16, i = 1; length < dkLen; ++i, length += 16) {
    digests.push(md5(digests[i - 1] + password + salt));
  }
  return digests.join('').substr(0, dkLen);
}
function evpBytesToKey ( password , salt , dkLen ) { var digests = [ md5 ( password + salt ) ] ; for ( var length = 16 , i = 1 ; length < dkLen ; ++ i , length += 16 ) { digests . push ( md5 ( digests [ i - 1 ] + password + salt ) ) ; } return digests . join ( '' ) . substr ( 0 , dkLen ) ; }
OpenSSL's legacy key derivation function.

See: http://www.openssl.org/docs/crypto/EVP_BytesToKey.html

@param password the password to derive the key from.
@param salt the salt to use.
@param dkLen the number of bytes needed for the derived key.
OpenSSL s legacy key derivation function .