Registration number verification

From Inforail
Jump to: navigation, search

Overview

Registration numbers - nobody likes them, especially when they are split into several chunks that have to go to different edit widgets (so you must perform more than one copy/paste operation from the keygen ;-) Nevertheless, they are the most common method of verifying the authenticity of the installed application, and most commercial software applies such checks.

Keywords

registration number, serial number, verification, public key cryptography

Objectives

  • Design and develop a registration number verification mechanism
  • That relies on public key cryptography

Requirements

There are no specific requirements for this assignment, you will have to devise them yourself; but you can refer to the points below for some ideas:

  • entering a long number by hand is error prone, shorter numbers are preferred
  • depending on the font, some characters can look very similar, ex: 0O, Il1 - which can result in usability issues
  • instead of making people type numbers, you can have them copy a key-file to a directory, thus avoiding manual input
  • entering characters other than digits or Latin letters can be very difficult, consider using base64 encoding or something similar, to make sure numbers don't look like this "AAA±³¢Ø09ÐŒ͋͌͏Ѭ۞ᴥ‖╟╚▓▒☺"

WARNING

  • Do not try to implement it in any way other than the way of public key cryptography; alternative approaches are easy to overcome
  • If you choose to do so, you are NOT getting the maximum grade for the project
  • Unless you also write a keygen, with ASCII art and old-school music ;-)


Grading policy

  • 9 - if it works correctly
  • 10 - if it works correctly and takes user experience into account


  • Alternative path - write a program that generates old-school music and renders moving text on the screen, applying a special effect on it.
    • 8 - if music XOR graphics is yours
    • 9 - if you meet the requirements for an 8 and add a unique feature that you think is 1337
    • 10 - the music AND graphics are yours

Notes

  • You must develop a module that can later be loaded by an application, which will call its functions to determine whether a number is valid or not. In other words, you need a VerifyNumber function that takes a string at the input and returns a bool (True if the number is valid, False if the number is not valid).
  • It is the task of the higher-level modules to decide what to do if VerifyNumber returned False, those decisions are outside the scope of this assignment.
  • Web-based applications are not special in any way; remember, you just need to write a function that decides if the number is good or not; what happens after the function returns - is somebody else's problem.


References