My project is almost done, so I’m thinking of the way how I authenticate the proper user.
Windows application(Desktop) and at time user can’t connect to Internet.
Can you let me know what is the usual practice for generating product keys and authenticate users?
From Forum, I see that there are several ways to get the unique value of user platform.
UUID/MAX Address/Hard Disk creation date
I can only reply for the second. My software is “free to use”, as it is, so no software theft can be made in such sense.
However, (registered and) subscribing users generate loads of benefits.
To keep track of these, I use a database in Internet and simply fill fields with date of subscription, the day of expire.
My software is personal, so there is no point to generate a key.
I make a simple example: Let’s pretend Skype is free for all to use, the voice. But for the video you will need to subscribe for the low annual fee. In such scenario there is no need for a key since it’s not possible for a user to connect with a different account to use the video… It is connected with a specific account.
My software works similar.
There is a feature in Skype called Skype Out.
To be honest, I just wanted to find such thread on the forum but helas … did not found one for generating keys/serials.
So Dave, I guess you should provide a link after all.
A simple system is to use the name of the user plus his email address to come up with a number that you transform (divide, extract square root, whatever) until it has the right length, then encrypt to come up with a unique number.
Then your software can ask for his name, email address and license number, like a lot of products around. Since you know the operations involved to generate that number, you can verify the validity within your program before allowing it to run.
There are numerous more aspects about security like protecting the encryption key and protecting your scheme against hackers. I have no doubt you will receive a lot of advice about that.
A devoted hacker will always go around any scheme (even commercial). The important thing is not so much to have an electronic Fort Knox, but to prevent casual piracy. Your protection scheme should not penalize honest users.
I wrote an article on this, too. Refers to Xojo in particular: http://www.tempel.org/UsingAquaticPrime
It explains also some background on various techniques, including protection against cracking etc.