"usually, I use a self-defined founction and the base64encode() to encrypt the most important things."
well that takes a hacker at least an extra 5 minutes to break 🙂
"I heard that you can't decrypt the strings encrypted by md5,but I am not certain."
Indeed you cannot, and that is what makes md5 perfect for passwords.
The idea of 'encrypting' passwords is that a hacker who breaks into your database cannot read the passwords (asif a hacker who gets into your DB would still need them...). But if you really encrypt, that means you use a key to encrypt and you need the same key to decrypt, and that means you must store that key somewhere on the server where PHP can find it. And surely any who can get into your database will have little problems getting into your PHP scripts too, so encryption is not safe enough.
MD5() is irreversable, you can only break it through brute-force (trial and error), and with a password of 16 characters that will take you a few years.
The only drawback is that you cannot get the user's password back when he or she reports to have forgotten the password. But that's ok, you can just issue a new password and send it to their email adres. That is also more secure because the people who forget passwords tend to also be the ones who write it down on a piece of paper in their top drawer, so a password change is always a good thing.