private boolean compareMD5Passwords( char[] filePassData,
					 char[] authPassData ) 
	throws ConfigurationException {


	String hashAlgorithm = "MD5";
	try {

	    // On Unix systems usually the password's hashes are MD5 encrypted (what about windows?)
	    MessageDigest messageDigest = MessageDigest.getInstance( hashAlgorithm );
	    // The incomingMD5Bytes contains 16 raw MD5 bytes (!), NOT characters!
	    byte[] incomingMD5Bytes     = messageDigest.digest( new String(authPassData).getBytes(java.nio.charset.StandardCharsets.UTF_8.name()) ); 

	
	    String fileMD5     = new String( filePassData );


	    if( CustomUtil.isApacheMD5(fileMD5) ) {

		this.logger.log( Level.INFO,
				 getClass().getName() + ".compareMD5Passwords(...)",
				 "It seems that you htaccess configuration contains an Apache MD5 encrypted hash. This type is not yet supported, sorry." );
		throw new ConfigurationException( "It seems that you htaccess configuration contains an Apache MD5 encrypted hash. This type is not yet supported, sorry." );
		
	    } else if( MD5.isIKRSMD5(fileMD5) ) {

		this.logger.log( Level.INFO,
				 getClass().getName() + ".compareMD5Passwords(...)",
				 "It seems that you htaccess configuration contains an IKRS MD5 encrypted hash. This type is not yet supported, sorry." );
		throw new ConfigurationException( "It seems that you htaccess configuration contains an IKRS MD5 encrypted hash. This type is not yet supported, sorry." );


	    } else if( CustomUtil.isMD5(fileMD5) ) {

		// Are both equal?
		byte[] fileMD5Bytes = CustomUtil.hex2bytes( fileMD5 );
		String incomingMD5 = new String( incomingMD5Bytes );
		this.logger.log( Level.INFO,
				 getClass().getName() + ".compareMD5Passwordsr(...)",
				 "Comparing passwords ..." ); // : incomingPass=" + new String(authPassword) + ", incomingMD5="+ incomingMD5 + ", incomingMD5[HEX]=" + CustomUtil.bytes2hexString(incomingMD5Bytes)+ ", fileMD5="+fileMD5+", equal="+(incomingMD5.equals(fileMD5)) );

		
		return java.util.Arrays.equals( fileMD5Bytes, incomingMD5Bytes );

	    } else {

		this.logger.log( Level.INFO,
				 getClass().getName() + ".compareMD5Passwords(...)",
				 "It seems that you htaccess configuration does not contain a valid MD5 hash." );
		throw new ConfigurationException( "It seems that you htaccess configuration does not contain a valid MD5 hash." );

	    }

	} catch( NoSuchAlgorithmException e ) {
	    
	    this.logger.log( Level.SEVERE,
			     getClass().getName() + ".compareMD5Passwords(...)",
			     "[NoSuchAlgorithmException] Failed to retrieve hashing algorithm '" + hashAlgorithm +"': " + e.getMessage() );
	    throw new ConfigurationException( "Failed to retrieve hashing algorithm '" + hashAlgorithm + "'." );
	    
	} catch( UnsupportedEncodingException e ) {
	    
	    this.logger.log( Level.WARNING,
			     getClass().getName() + ".compareMD5Passwords(...)",
			     "[UnsupportedEncodingException] Unsupported password encoding: " + e.getMessage() );
	    throw new ConfigurationException( "Unsupported encoding." );
	    
	} 
	
    } // END method