logo

Programme pour générer CAPTCHA et vérifier l'utilisateur

UN CAPTCHA (Test de Turing public entièrement automatisé pour distinguer les ordinateurs des humains) est un test permettant de déterminer si l'utilisateur est humain ou non.
La tâche consiste donc à générer un CAPTCHA unique à chaque fois et à déterminer si l'utilisateur est humain ou non en lui demandant de saisir le même CAPTCHA généré automatiquement et en vérifiant la saisie de l'utilisateur avec le CAPTCHA généré.
Exemples : 

générateur de valeurs aléatoires en Java
CAPTCHA: x9Pm72se Input: x9Pm62es Output: CAPTCHA Not Matched CAPTCHA: cF3yl9T4 Input: cF3yl9T4 Output: CAPTCHA Matched

L'ensemble de caractères à générer CAPTCHA est stocké dans un tableau de caractères chrs[] qui contient (a-z A-Z 0-9), donc la taille de chrs[] est de 62. 
Pour générer un CAPTCHA unique à chaque fois qu'un nombre aléatoire est généré à l'aide de la fonction rand() (rand()%62) qui génère un nombre aléatoire entre 0 et 61 et le nombre aléatoire généré est pris comme index du tableau de caractères chrs[] génère ainsi un nouveau caractère de captcha[] et cette boucle s'exécute n (longueur du CAPTCHA) fois pour générer un CAPTCHA de longueur donnée.

Algorithme:



  1. Déclarez et définissez d’abord la fonction checkCaptcha() qui prend deux paramètres de chaîne et renvoie une valeur booléenne.
  2. Dans la fonction checkCaptcha(), comparez les deux paramètres de chaîne à l'aide de la fonction compare() et renvoyez true s'ils sont identiques ; sinon, retourne faux.
  3. Déclarez et définissez la fonction generateCaptcha() qui prend un paramètre entier et renvoie une valeur de chaîne.
  4. Dans la fonction generateCaptcha(), initialisez une variable de temps à l'aide de la fonction time() et amorcez le générateur de nombres aléatoires à l'aide de la fonction srand().
  5. Déclarez un tableau de caractères contenant tous les caractères à inclure dans le CAPTCHA et affectez-le à une variable de pointeur char.
  6. Générez une chaîne CAPTCHA aléatoire de la longueur spécifiée en ajoutant à plusieurs reprises des caractères aléatoires du tableau de caractères à une variable de chaîne à l'aide de la fonction push_back().
  7. Renvoie la chaîne CAPTCHA générée.
  8. Dans la fonction main(), déclarez une variable de chaîne nommée captcha et appelez la fonction generateCaptcha() d'une longueur de 9 pour générer une chaîne CAPTCHA aléatoire.
  9. Imprimez la chaîne CAPTCHA générée sur la 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(); 

Sortir:  

dénomination des conventions Java
CAPTCHA: cF3yl9T4 Enter CAPTCHA: cF3yl9T4 CAPTCHA Matched

Complexité temporelle : Sur)
Complexité spatiale : O(1)

Créer un quiz