Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

C++ Program: สร้างและตรวจสอบ CAPTCHA

สร้าง CAPTCHA แบบสุ่ม (a-z, A-Z, 0-9) ให้ผู้ใช้กรอก แล้วตรวจสอบความถูกต้อง

ตัวอย่างโค้ด

#include <bits/stdc++.h>
using namespace std;

bool check_captcha(const string& captcha, const string& user_input) {
    return captcha == user_input;
}

string generate_captcha(int length) {
    const string chars = 
        "abcdefghijklmnopqrstuvwxyz"
        "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        "0123456789";

    static std::mt19937 rng(std::random_device{}());
    std::uniform_int_distribution dist(0, chars.size() - 1);

    string captcha;
    captcha.reserve(length);
    for (int i = 0; i < length; i++)
        captcha += chars[dist(rng)];

    return captcha;
}

int main() {
    string captcha = generate_captcha(9);
    cout << "CAPTCHA: " << captcha << endl;

    string user_input;
    cout << "Enter CAPTCHA: ";
    cin >> user_input;

    if (check_captcha(captcha, user_input))
        cout << "CAPTCHA Matched\n";
    else
        cout << "CAPTCHA Not Matched\n";

    return 0;
}

ผลลัพธ์ตัวอย่าง

CAPTCHA: nwsraJhiP
Enter CAPTCHA: fgyeugs56
CAPTCHA Not Matched

ปรับปรุงความปลอดภัย

  • ใช้ Cryptographically Secure RNG (random_device)
  • เพิ่ม Noise/Distortion ถ้าเป็น Image CAPTCHA
  • จำกัดเวลาและจำนวนครั้งที่พยายาม
  • เก็บ Session/Token ป้องกัน Replay Attack

หมายเหตุ

โค้ดต้นฉบับใช้ srand(time(&t)) ภายในฟังก์ชัน ทำให้หากเรียกเร็วเกินไปจะได้ค่าเดิม เราแก้ไขให้ใช้ static mt19937 แบบ Modern C++