Hi, I'm working on an application where users have to make a call and type a verification number with the keypad of their phone.
I would like to be able to detect if the number they type is correct or not. The phone system does not have access to a list of valid numbers, but instead it will validate the number against an algorithm (like a credit card number).
Here are some of the requirements :
- It must be difficult to type a valid random code
- It must be difficult to have a valid code if I make a typo (tranposition of digits, wrong digit)
- I must have a reasonnable number of possible combinations (let's say 1M)
- The code must be as short as possible, to avoid errors from the user
Given these requirements, how would you generate such a number ?
Thanks !
EDIT :
@Haaked : The code has to be numerical, because the user type it with it's phone.
@matt b : On the first step, the code is displayed on a Web page, the second step is to call and type in the code. I don't know the user's phone number.
Folowup : I've found several algorithms to check the validity of numbers (See this intersting Google Code project : checkDigits).