首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言模擬 ATM 密碼驗證:三次重試、鎖定與 Sleep 延遲

     編輯:關於C語言

C語言模擬 ATM 密碼驗證:三次重試、鎖定與 Sleep 延遲

預設密碼 "123456",最多 3 次錯誤鎖定 5 秒。

代碼實現

#include <stdio.h>
#include <string.h>
#include <windows.h> // Sleep()

int main() {
    const char *pwd = "123456";
    char input[10];
    for (int i = 0; i < 3; i++) {
        printf("請輸入密碼 (最多9位):");
        scanf("%s", input);
        if (strcmp(pwd, input) == 0) { puts("取款成功"); return 0; }
        puts("密碼錯誤!");
    }
    puts("三次錯誤,5秒後關閉系統");
    Sleep(5000); // 毫秒
    return 0;
}

跨平台 Sleep

// Linux/Unix
#include <unistd.h>
sleep(5); // 秒

// 跨平台封裝
#ifdef _WIN32
#include <windows.h>
#define MSLEEP(ms) Sleep(ms)
#else
#include <unistd.h>
#define MSLEEP(ms) usleep((ms)*1000)
#endif

安全加固建議

  • 輸入長度限制:scanf("%9s", input) 防緩衝區溢出。
  • 密碼不應明文硬編碼,實際應用需哈希存儲 (bcrypt/Argon2)。
  • 錯誤提示不區分「用戶不存在」與「密碼錯誤」,防止用戶枚舉。
  • 生產環境應使用常數時間比較防時序攻擊。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved