"I might do it" - The event of doing it is in the future, and you are still considering if you will do it or not.
"I may have done it" The event of doing it is in the past, and you cannot remember if you did it or not.
"I could do it"- You have the ability to do it. This is frequently used with an if-clause: I could do it if I wanted to. I could do it, if I had the proper tools.
"I can have done" - not grammatically correct. "could" is used with the past perfect subjunctive in this example:
I could have done it, if I had had the proper tools.