logo

Programma om CAPTCHA te genereren en de gebruiker te verifiëren

A CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) is een test om te bepalen of de gebruiker een mens is of niet.
De taak is dus om elke keer unieke CAPTCHA te genereren en te vertellen of de gebruiker een mens is of niet, door de gebruiker te vragen dezelfde CAPTCHA in te voeren die automatisch is gegenereerd en de gebruikersinvoer te controleren met de gegenereerde CAPTCHA.
Voorbeelden: 

CAPTCHA: x9Pm72se Input: x9Pm62es Output: CAPTCHA Not Matched CAPTCHA: cF3yl9T4 Input: cF3yl9T4 Output: CAPTCHA Matched

De set tekens om CAPTCHA te genereren wordt opgeslagen in een tekenarray chrs[] die (a-z A-Z 0-9) bevat. Daarom is de grootte van chrs[] 62. 
Om elke keer dat een willekeurig getal wordt gegenereerd een unieke CAPTCHA te genereren, gebruikt u de functie rand() (rand()%62) die een willekeurig getal genereert tussen 0 en 61 en het gegenereerde willekeurige getal wordt genomen als index voor de karakterarray chrs[] genereert dus een nieuw karakter van captcha[] en deze lus loopt n (lengte van CAPTCHA) keer om CAPTCHA van een bepaalde lengte te genereren.

Algoritme:



  1. Declareer en definieer eerst de functie checkCaptcha() die twee stringparameters nodig heeft en een Booleaanse waarde retourneert.
  2. Vergelijk binnen de functie checkCaptcha() de twee stringparameters met behulp van de functie Compare() en retourneer true als ze hetzelfde zijn; anders retourneert false.
  3. Declareer en definieer de functiegenereCaptcha() die een geheel getalparameter nodig heeft en een tekenreekswaarde retourneert.
  4. Initialiseer binnen de functie generatorCaptcha() een tijdvariabele met behulp van de functie time() en zaai de generator voor willekeurige getallen met behulp van de functie srand().
  5. Declareer een karakterarray met alle karakters die in de CAPTCHA moeten worden opgenomen en wijs deze toe aan een char-pointervariabele.
  6. Genereer een willekeurige CAPTCHA-tekenreeks van de opgegeven lengte door herhaaldelijk willekeurige tekens uit de tekenarray toe te voegen aan een tekenreeksvariabele met behulp van de functie push_back().
  7. Retourneert de gegenereerde CAPTCHA-tekenreeks.
  8. Binnen de functie main() declareert u een tekenreeksvariabele met de naam captcha en roept u de functie generatorCaptcha() aan met een lengte van 9 om een ​​willekeurige CAPTCHA-reeks te genereren.
  9. Druk de gegenereerde CAPTCHA-reeks af op de console. 
     
CPP
// C++ program to automatically generate CAPTCHA and // verify user #include    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; } 
Java
// Java pprogram to automatically generate CAPTCHA and // verify user import java.util.*; import java.io.*; class GFG {    // Returns true if given two strings are same  static boolean checkCaptcha(String captcha String user_captcha)  {  return captcha.equals(user_captcha);  }    // Generates a CAPTCHA of given length  static String generateCaptcha(int n)  {  //to generate random integers in the range [0-61]  Random rand = new Random(62);     // Characters to be included  String chrs = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';    // Generate n characters from above set and  // add these characters to captcha.  String captcha = '';  while (n-->0){  int index = (int)(Math.random()*62);  captcha+=chrs.charAt(index);  }    return captcha;  }    // Driver code  public static void main(String[] args)throws IOException  {  BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));    // Generate a random CAPTCHA  String captcha = generateCaptcha(9);  System.out.println(captcha);    // Ask user to enter a CAPTCHA  System.out.println('Enter above CAPTCHA: ');  String usr_captcha = reader.readLine();    // Notify user about matching status  if (checkCaptcha(captcha usr_captcha))  System.out.println('CAPTCHA Matched');  else  System.out.println('CAPTCHA Not Matched');  } } // This code is contributed by shruti456rawal 
Python3
# Python program to automatically generate CAPTCHA and # verify user import random # Returns true if given two strings are same def checkCaptcha(captcha user_captcha): if captcha == user_captcha: return True return False # Generates a CAPTCHA of given length def generateCaptcha(n): # Characters to be included chrs = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' # Generate n characters from above set and # add these characters to captcha. captcha = '' while (n): captcha += chrs[random.randint(1 1000) % 62] n -= 1 return captcha # Driver code # Generate a random CAPTCHA captcha = generateCaptcha(9) print(captcha) # Ask user to enter a CAPTCHA print('Enter above CAPTCHA:') usr_captcha = input() # Notify user about matching status if (checkCaptcha(captcha usr_captcha)): print('CAPTCHA Matched') else: print('CAPTCHA Not Matched') # This code is contributed by shubhamsingh10 
C#
using System; using System.Text; class GFG {  // Returns true if given two strings are same  static bool CheckCaptcha(string captcha string user_captcha)  {  return captcha.Equals(user_captcha);  }  // Generates a CAPTCHA of given length  static string GenerateCaptcha(int n)  {  // to generate random integers in the range [0-61]  Random rand = new Random();  // Characters to be included  string chrs = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';  // Generate n characters from above set and  // add these characters to captcha.  StringBuilder captcha = new StringBuilder();  while (n-- > 0)  {  int index = rand.Next(62);  captcha.Append(chrs[index]);  }  return captcha.ToString();  }  // Driver code  static void Main(string[] args)  {  // Generate a random CAPTCHA  string captcha = GenerateCaptcha(9);  Console.WriteLine(captcha);  // Ask user to enter a CAPTCHA  Console.WriteLine('Enter above CAPTCHA: ');  string usr_captcha = Console.ReadLine();  // Notify user about matching status  if (CheckCaptcha(captcha usr_captcha))  Console.WriteLine('CAPTCHA Matched');  else  Console.WriteLine('CAPTCHA Not Matched');  } } 
JavaScript
// JavaScript program to automatically generate CAPTCHA and // verify user // Returns true if given two strings are same function checkCaptcha(captcha user_captcha) { return captcha.localeCompare(user_captcha) == 0; } // Generates a CAPTCHA of given length function generateCaptcha(n) { // Characters to be included const chrs = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; let captcha = ''; for (let i = 0; i < n; i++) { captcha += chrs[(Math.floor(Math.random() * chrs.length))]; } return captcha; } // Driver code function main() { // Generate a random CAPTCHA const captcha = generateCaptcha(9); console.log(captcha); // Ask user to enter a CAPTCHA const usr_captcha = prompt('Enter above CAPTCHA:'); // Notify user about matching status if (checkCaptcha(captcha usr_captcha)) console.log('CAPTCHA Matched'); else console.log('CAPTCHA Not Matched'); } main(); 

Uitgang:  

CAPTCHA: cF3yl9T4 Enter CAPTCHA: cF3yl9T4 CAPTCHA Matched

Tijdcomplexiteit: Op)
Ruimtecomplexiteit: O(1)

Quiz maken