Question

Programming Change

Asked by: mj9821

I currently need a program that generates a 20 digit code based on a given algorithm.  The program will be used to generate codes for use in a software application.  Our programmer should be able to use the code to both generate codes for new users, and to verify a user has the proper numerical code.

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2005-01-24 at 20:23:32ID21287199
Topic

C Programming Language

Participating Experts
6
Points
500
Comments
15

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. PI algorithm
    I have been working on a PI algorithm that I got off the internet a long time ago. I am not sure what is called or anything, but I have a few questions. First, here is the code (a little MFC): // Global variables (this WILL BE REDESIGNED). const long d1 = 239, d = 25; long...
  2. Check Digits
    This isn't really a VB question but I thought that us VB people may have come across something like this before. I'm trying to calculate a check digit for a number of cheques (or checks ?!?!). The numbers on the cheques I have so far are (for example): 040809-7, 040810-1, ...
  3. C++ help with roman numerals
    this is my second question, because no one answers the first one. I need to make a programm, where you enter a roman numeral, then another one, then arithmetic sign and the programm should caculate the answer and give the answere in Roman numerals and in normal. I am trying t...
  4. Algorithm
    Hi, I need to algorithm to create an account number for my application. I need something like a modulus 10 but for six numeric digit with a check digit. Please help! Thanks Percy
  5. Rupees conversion programme
    I wants the rupees conversion programme If i enter a value 100 in text box it will display rupees one hundred only how to write this programme regs/nandu_cpt

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: koposPosted on 2005-01-24 at 20:32:26ID: 13128523

>> I currently need a program that generates a 20 digit code based on a given algorithm

do you have the algorithm?

 

by: mj9821Posted on 2005-01-24 at 20:54:47ID: 13128582

I don't have the algorithm.  I need a random one created that follows some formula, so as to authenticate any user that might need to unlock the software.

Thanks!

 

by: sunnycoderPosted on 2005-01-24 at 21:17:32ID: 13128676

What you are asking for is quite a task ... One relatively simple way of doing it will be ...

Take some constant information like cutomer name, product version etc. and form a string. Calculate MD5 hash of this string.

MD5 + Serial = constant number

This is fast and easily reversible but is not too secure either.

Yet another way will be to define fields in your serial, say first 4 digits will be a number divisible by 13 next 4 digits will be a prime number and so on so forth ... you can then convert them to base 36 or any other number of characters ...

As you can see, the security in either case depends on how well you can keep a secret.

 

by: ssnkumarPosted on 2005-01-24 at 21:32:21ID: 13128735

If you want, you can use some "randomize" algorithm to do this.

-ssnkumar

 

by: sunnycoderPosted on 2005-01-24 at 21:46:23ID: 13128769

ssnkumar,

>If you want, you can use some "randomize" algorithm to do this.
The issue with randomize algorith is how do you verify a serial if it is correct or not?

cheers!
sunnycoder

 

by: ssnkumarPosted on 2005-01-24 at 21:53:41ID: 13128796

Use some seed such as mail id (it has to be converted to an integer using another algorithm).
This is just an alternative approach that I thought:-)

-ssnkumar

 

by: sunnycoderPosted on 2005-01-24 at 22:00:15ID: 13128815

seeding is fine ... Assume that a copy of your program is with a customer who enters a serial number. Now your program needs to decide if the serial number is correct or not. So you will have to seed the random number generator and regenerate the same sequence of random numbers but
 - uptil what point? It might be a thousand or million iterations before you get the serial.
 - how do you ensure that it does not accept any other random number as serial? A random number generator is expected to generate every value after sufficient iterations
 - How do you make sure that it does not generate same key twice - you need unique random numbers and not just random numbers

There might be more but that was all I could think of at the moment.

 

by: ssnkumarPosted on 2005-01-24 at 22:09:22ID: 13128844

Yes, you are right Sunnycoder!

-ssnkumar

 

by: sunnycoderPosted on 2005-01-24 at 22:16:23ID: 13128885

mj9821,

Is it OK to impose a restriction that you need internet connection to register?

If yes, then we can have far more reliable method as

Take some constant information like customer name, product version etc. and form a string. Calculate MD5 hash of this string. Append current time to this string.

MD5_time + Serial = constant number

Or even

MD5_time

While registering the time component will be the time at which the serial was generated by you (time of purchase) and give customer name etc, you should be able to retrieve time from your database to verify the serial.

You can do some reversible bitwise operations on final string to make it more secure.

Cheers!
sunnycoder

 

by: ozoPosted on 2005-01-24 at 22:59:09ID: 13129029

some reversible bitwise operations on final string to make it more secure than MD5?

 

by: ozoPosted on 2005-01-24 at 23:02:10ID: 13129040

If the constant information can be guessed, the MD5 hash can be duplicated.
You should probably include a secret key in the constant information.

 

by: sunnycoderPosted on 2005-01-24 at 23:04:14ID: 13129046

No, just harder to guess ... MD5 is still there

 

by: grg99Posted on 2005-01-25 at 06:20:14ID: 13132041

Here's an algorithm:

Generation:   Get the time of day, that's your starting variable D

Now repeat 20 times:  print D mod 10;  D = (D * 4999)  mod 1000000;

That will give you a string of 20 digits.

For testing this string, just run the same code with D = the first digit.

Note:
     If you look at the cracks web sites you will see that these methods are easily broken by crackers-- one site boasts 14,000+ cracks.    Most every validation routine eventually ends up at a conditional jump instruction-- all the cracker has to do is find that instruction and put a 90h (NOP) over it and the app is cracked.



 

by: aib_42Posted on 2005-01-25 at 13:17:37ID: 13136589

>Most every validation routine eventually ends up at a conditional jump instruction-- all the cracker has to do is find that
>instruction and put a 90h (NOP) over it and the app is cracked.

But note that serial number generators are looked more highly upon than file modifications.

Anyhow, anything except crippleware can be cracked. And with crippleware, it's just time before some registered user put the full version on one of the p2p networks.

 

by: mj9821Posted on 2005-01-25 at 15:00:54ID: 13137425

Very good idea Grg99

You got it.

I am also sending sunnycoder 500 for a great suggestion.

Thanks for all the help!

-Michael

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...