1. A system comprising: a computer processor configured to protect computer software from unauthorized use by: encrypting a license file associated with the computer software using a private key, wherein the license file comprises one or more license keys, each license key associated with a feature of the computer software; and decrypting the license file associated with the computer software at runtime of the computer software using a public key; a computer processor configured with a module to determine whether a user is permitted to execute the computer software; and a computer processor configured to authenticate the module by one or more of determining whether a hash code included within the module matches a hash code generated by a user of the computer software at run time of the computer software; and encrypting the module prior to run time of the computer software using the private key and decrypting the module at run time of the computer software using the public key.