In this post we will be writing a C++ program to generate CAPTCHA and then will do the user verification, it’s really simple to do, lets see how:
What is CAPTCHA?
A CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) is a test to determine whether the user is human or not.
So, the task is to generate unique CAPTCHA every time and to tell whether the user is human or not by asking user to enter the same CAPTCHA as generated automatically and checking the user input with the generated CAPTCHA.
So before writing a c++ program to generate CAPTCHA we must understand with the help of example.
Examples:
CAPTCHA: x9Pm72se Input: x9Pm62es Output: CAPTCHA Not Matched CAPTCHA: cF3yl9T4 Input: cF3yl9T4 Output: CAPTCHA Matched
The set of characters to generate CAPTCHA are stored in a character array chrs[] which contains (a-z, A-Z, 0-9), therefore size of chrs[] is 62.
To generate a unique CAPTCHA every time, a random number is generated using rand() function (rand()%62) which generates a random number between 0 to 61 and the generated random number is taken as index to the character array chrs[] thus generates a new character of captcha[] and this loop runs n (length of CAPTCHA) times to generate CAPTCHA of given length. Let’s write a C++ program to generate CAPTCHA
Program to generate CAPTCHA and verify user:
// C++ program to automatically generate CAPTCHA and // verify user #include<bits/stdc++.h> using namespace std; // Returns true if given two strings are same bool checkCaptcha(string &captcha, string &user_captcha) { return captcha.compare(user_captcha) == 0; } // Generates a CAPTCHA of given length string generateCaptcha(int n) { time_t t; srand((unsigned)time(&t)); // Characters to be included char *chrs = "abcdefghijklmnopqrstuvwxyzABCDEFGHI" "JKLMNOPQRSTUVWXYZ0123456789"; // Generate n characters from above set and // add these characters to captcha. string captcha = ""; while (n--) captcha.push_back(chrs[rand()%62]); return captcha; } // Driver code int main() { // Generate a random CAPTCHA string captcha = generateCaptcha(9); cout << captcha; // Ask user to enter a CAPTCHA string usr_captcha; cout << "nEnter above CAPTCHA: "; cin >> usr_captcha; // Notify user about matching status if (checkCaptcha(captcha, usr_captcha)) printf("nCAPTCHA Matched"); else printf("nCAPTCHA Not Matched"); return 0; }
Output:
CAPTCHA: cF3yl9T4 Enter CAPTCHA: cF3yl9T4 CAPTCHA Matched
Hope you like it easy, please comment if you face any problem.
this code is not running properly
Can you please provide the error you are getting?