Faccio un esempio banalissimo per rendere più chiaro il concetto.
la password è uguale a 3
la funzione personalizzata è per esempio elevamento a potenza.
Prima che 3 venga inviato in rete applico la funzione personalizzata ottenendo così il 9. In rete viaggerà il numero 9 non il 3. Arriverà sul server il 9 ci applico la radice quadrata
il che equivale a dire: nella pagina di login ci deve essere un algoritmo poi decrittabile (ovvero non one-way) lato server

Quindi, se un attaccante intercetta il dato e poi entra nella pagina di login in questione, è in grado di risalire al vero valore di login e password poichè l'algoritmo è lato client

A mio parere ti conviene evitare la crittazione lato client e ti suggerisco quest'altra via

1) invia la password in chiaro (ad es. 'pwd')
2) lato server leggi la password e appendi una stringa non banale ad es. 'n6gvb5x03'
3) codifichi in MD5 la stringa così ottenuta (ovvero n6gvb5x03_pwd' e il risultato diventa la password reale che salvi su DB

il meccanismo funziona perchè la password che tu salvi non è l'MD5 della password reale ma una concatenazione di stringhe e l'attaccante non conosce la stringa appesa lato server