well you could take whatever you want to encrypt (passwords i presume) and then prepend and append it with random data before you md5 hash it - e.g. they provide password of "liverpool" (say, for no particular reason), then rather than md5-ing "liverpool" you could md5 "$42hsbK7%3liverpool23G14$*aoe". That way you're making anything you're trying to MD5 much more random that it would be and protecting from a pre-generated MD5 dictionary attack, and you're going to greatly increase the length and complexity of any password that anyone enters.
As long as you prepend and append with the same random string when you're checking against the MD5 then it should make it more secure. unless of course someone hacks into your webserver and sees what you're prepending and appending to the data in your PHP script, but then i guess you've got bigger problems if someone does that...
(edit)
sorry have just realised that you might be wanting to protect against attacks with someone entering random strings into the log in form? in which case it doesn't matter what you use to encrypt the data, if you allow someone to try as many passwords as they like and just keep returning them then they'll eventually hit on the right one. If that's what you're worried about then you should maybe log the IP of the attempted entry - then if you get 3 wrong attempts in, say, a minute, then have the script reject login attempts from that ip for an hour. Not fool proof, but a good start. of course, if you get repeated password fails on a particular username then you should deactivate the account and send an email to the account owner.
Does either of the above help?
(/edit)