Product key generation

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

It seems as you are asking two questions at once!

  1. How to generate the serial key.
  2. How to keep track of registered users.

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.

This topic has been discussed on this forum MANY MANY times… with MANY MANY alternatives provided…

Hi Dave,

Why not suggest or refer a link.

I think it is much better than saying " MANY MANY times… with MANY MANY alternatives ".

Peace.

Because the forum has a search feature, and I don’t have time to do the research for the poster, when he is fully capable of doing it himself?

Maybe we can tell him…

“Try to type in the search bar. There’s a bunch of solution you can find in this forum.”

Its more compelling and motivational.

To be honest, I just wanted to find such thread on the forum but helas … did not found one for generating keys/serials. :slight_smile:
So Dave, I guess you should provide a link after all. :slight_smile:

How to generate and validate a software license key?
http://stackoverflow.com/questions/599837/how-to-generate-and-validate-a-software-license-key

Here is one answer as I would like to look into myself!


how to create a serial key
https://www.google.com/search?q=how+to+create+a+serialkey&ie=utf-8&oe=utf-8#q=how+to+create+a+serial+key

Some interesting conversations all along with some not so interesting…! :slight_smile:

Or this:
Not free.

This may help https://cse.google.de/cse/publicurl?cx=008988130934258766521:z7y63ptbi2q

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.

[quote=214894:@Thomas Tempelmann]I wrote an article on this, too. Refers to Xojo in particular: http://www.tempel.org/UsingAquaticPrime
[/quote]

I love this statement :

Just today I watched this, which is right on the money :
http://www.ted.com/talks/dan_gilbert_asks_why_are_we_happy

Thanks you all.
I could get the useful concepts on building a protection scheme from your valuable input.