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

C語言模擬用戶登入:三次密碼嘗試限制與字串比較

     編輯:關於C

核心需求

  • 預設密碼 `"123456"`。
  • 最多允許輸入 3 次。
  • 正確 → 登入成功;3 次錯誤 → 鎖定退出。

完整程式碼

#include 
#include 

int main() {
    const char *password = "123456";
    char input[20];
    int attempts = 0;

    for (attempts = 0; attempts < 3; attempts++) {
        printf("Enter password: ");
        scanf("%19s", input); // 限制長度防溢位
        if (strcmp(password, input) == 0) {
            puts("Login success!");
            break;
        } else {
            puts("Wrong password!");
        }
    }

    if (attempts == 3)
        puts("3 failures. System locked.");
    return 0;
}

關鍵細節

細節說明
`%19s`限制讀取長度,留 1 位給 `\0`,防止緩衝區溢位
`strcmp`字串比較,相等回傳 0
`for` 迴圈控制次數比 `while` 更清晰表達「最多 3 次」
密碼隱藏輸入真實系統應用 `getch()` 或終端機關閉回顯,此處為教學簡化

進階擴展

  • 密碼雜湊儲存:不儲存明文,存 `SHA-256(password+salt)`。
  • 嘗試延遲:失敗後 `sleep(1)` 增加暴力破解成本。
  • 帳號鎖定:記錄失敗次數至檔案/資料庫,超過閾值永久鎖定。
  • 多因子驗證:結合 SMS/Email OTP 或 TOTP。

總結

三次密碼嘗試是基礎安全機制。核心在於:`for` 迴圈計數、`strcmp` 比較、`scanf` 寬度限制。實務開發務必加入雜湊、限流、日誌審計等防護層。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved