private String constructPWhashForIPboard(String salt, String pw)
   {
      //$hash = md5( md5( $salt ) . md5( $cleaned_password ) );
      /* this is how IPboard constructs the hash
         $hash is the value stored in the database column members_pass_hash.
         $salt is the value stored in the database column members_pass_salt.
         $password is the plain text password.  (but some chars are HTML-escaped decimally!!
         see: http://www.invisionpower.com/support/guides/_/advanced-and-developers/integration/login-modules-r42)
       */

      String hash = "";
      String hashedPWhex = null;
      String hashedSaltHex = null;

      try
      {
         hashedPWhex = getMD5(escapeHTML(pw).getBytes("UTF-8")); // escapeHTML converts some special chars into HTML entities (see file: HtmlCharacterEntityReferencesForIPboard.properties)
         if(RemoteQuery.debug){RemoteQuery.log.info("PLUGIN Hashed PW: " + hashedPWhex);}
         hashedSaltHex = getMD5(salt.getBytes("UTF-8"));
         if(RemoteQuery.debug){RemoteQuery.log.info("PLUGIN Hashed Salt: " + hashedSaltHex);}
         String concatValue = hashedSaltHex.concat(hashedPWhex);         
         hash = getMD5(concatValue.getBytes("UTF-8"));
      }
      catch (UnsupportedEncodingException e)
      {       
         e.printStackTrace();
      }

      return hash;
   }