After spending a lot of work on a tool, (my first commercially (and at all) distributed program! hooray for me) I'm trying to implement a software key kind of deal to protect it from being shared so easily. I tried using an online verification program like IntelliProtector, although now during the build, it seems to just freeze every time. But either way, I also tried looking into RSA Cryptography, etc, although that seems to be taking an extremely long time to understand for me, and I don't even know if I'm taking the correct path. What is the best way for me to protect my software?