Skip to content
OnlyProjects
BCA · Cyber SecurityFor educational purposes only
Code included

Password Policy Auditor & Hygiene Trainer for Synthetic Accounts (Java/MySQL)

Audit password policies with NIST-aligned rules, breach-corpus checks and a trainer mode — on synthetic accounts only

Mapped to your syllabusIGNOU BCA (revised) — BCSP-064 guidelines · BCSP-064 Project · Semester 6

Overview

1 min read

PassCheck Auditor is an individual Java Swing desktop application that helps a college IT office audit its password policy and train staff in password hygiene — using a roster of 200 clearly-labelled synthetic accounts, never real users.

The office can define policy sets per role (faculty, student, guest) that follow NIST SP 800-63B: minimum length 8 (the office chooses 12), maximum length at least 64, all printable characters allowed, no forced composition rules, no forced periodic rotation, and a blocklist of common and breached passwords. The evaluation engine then tests any candidate password against the policy: length boundaries, personal-information matches, a bundled dictionary of the most common passwords, keyboard-walk patterns (qwerty-style rows), repeated characters and sequences. It reports a verdict per rule, an entropy estimate and an offline crack-time figure at a stated guess rate.

A breach check sends only the first five characters of the password's SHA-1 hash to the public Pwned Passwords range API — the k-anonymity design means the full password and its complete hash never leave the machine — with an offline fallback that uses the bundled blocklist when there is no internet, so the viva demo never depends on a network.

Every run is recorded, and the tool produces per-account and aggregate compliance reports as CSV. A trainer mode with a live strength meter and plain-language feedback makes the tool usable in a 30-minute hygiene session for staff. Storage follows secure practice: demo passwords are bcrypt-hashed, SQL uses prepared statements, nothing sensitive is logged.

Relevant for
All India
Level
Beginner · 12 weeks · solo
Common at
IGNOU, Bengaluru City University, GGSIPU
Updated
Oct 2026

Syllabus alignment

IGNOU · BCA (revised) — BCSP-064 guidelines

BCSP-064 · Project · Semester 6 · 8 credits · 200 = report 150 + viva 50 (≥40% each)

Subjects this project applies
  • Java Programming
  • DBMS (Oracle / MySQL)
  • Software Engineering
  • JavaScript / Web Basics
How it is evaluated

Team: individual only

synopsis with DFD (≥ level 2), ER/class diagrams; 50–80-page hardbound report (±10%); test cases; security section. Prohibited: C/C++ for DB projects, VB + MS-Access, dBase/FoxPro. Plagiarism → Exam Discipline Committee

Also fits: BCU SEP 2024, GGSIPU 4-year BCA 2024, Bharathiar University 2023-24.

What's in the box

11 parts · 5 free · 2 previewed · 4 unlock for ₹2,000

Problem & synopsis

5 min read

Problem statement

College password policies in India are usually copied from an old template: eight characters, one capital, one digit, one special symbol, changed every 90 days. Modern guidance — NIST SP 800-63B and CERT-In's own awareness material — has abandoned composition rules and calendar-based rotation in favour of length, blocklists of breached passwords, and evidence-triggered resets. But a college office has no practical way to see whether its circular would actually stop the passwords users really choose, and it cannot ethically collect real passwords to find out. Staff therefore satisfy the rules with Password@123-class passwords that are trivially guessable and appear on every breach list. There is a need for a policy auditor and hygiene trainer that works entirely on synthetic accounts: it encodes the modern rules, tests candidate passwords against them (including a privacy-preserving breach check), reports policy gaps in plain language, and doubles as a training tool — without ever touching a real user's credential.

Synopsis

Abstract

Passwords remain the first line of defence for college systems — ERP logins, lab machines, Wi-Fi portals — yet the typical Indian college policy still enforces rules that guidance has moved beyond: mandatory special characters, 90-day forced resets, maximum lengths too short for passphrases. This project builds PassCheck Auditor, a Java/MySQL desktop application that lets a college IT office test its password policy against evidence and train staff, using synthetic accounts so that no real credential is ever handled.

Introduction

A college IT office writes a password rule in a circular, but nobody measures what the rule actually catches or misses. CERT-In's awareness material and NIST SP 800-63B now agree on the essentials: length beats composition tricks, common passwords must be blocked, and rotation should be triggered by evidence of compromise, not by the calendar. An auditor that encodes those rules turns a policy document into something testable.

Existing System

  • The policy lives in a circular; compliance is assumed, never measured.
  • "Strong password" advice on notice boards still pushes composition rules that NIST dropped in 2017 and reaffirmed since.
  • Staff pick Password@123-class passwords that satisfy composition rules yet top every breach list — exactly the guessable patterns CERT-In's booklet warns about.
  • When a breach makes headlines, the office has no way to check whether its users' habits would survive the same leak — and cannot ethically collect real passwords to find out.
  • Limitations: no evidence, no tooling, no training loop, and any attempt to audit real accounts raises privacy problems the office cannot solve.

Proposed System

  • A synthetic roster: 200 fictional accounts (faculty/student/guest roles) whose "passwords" are submitted only by the person running the audit — no real user is ever involved, and the demo data ships seeded.
  • A policy editor with role-based policy sets encoding NIST-aligned rules: length range, blocklist, personal-info checks, allowed characters, and an explicit switch recording that rotation is evidence-triggered.
  • An evaluation engine with per-rule verdicts: length, dictionary blocklist, keyboard walks, repeats/sequences, personal-info match, plus entropy bits and crack-time at a documented guess rate.
  • A breach check via the Pwned Passwords k-anonymity range API (first five SHA-1 hex characters only), with an offline fallback to the bundled list.
  • Bulk audit from CSV with per-account compliance reports, exportable for the office's records.
  • A trainer mode: live strength meter, explainable feedback, a short lesson on passphrases and evidence-based rotation.

Feasibility Study

  • Technical: Java 17 with Swing, JDBC and jBCrypt, and MySQL 8 — everything the IGNOU syllabus already teaches; the HTTP call uses the JDK's built-in HttpClient. The application runs entirely offline except the optional breach check.
  • Economic: Zero licence cost; runs on any office PC with 4 GB RAM.
  • Operational: The office keeps its circular; the auditor shows which rules would fail today and which habits need training, on synthetic data — privacy and the spirit of the DPDP Act, 2023 preserved by design.

Objectives

  1. 01Encode NIST SP 800-63B memorized-secret guidance as configurable policy sets: minimum length 8 (office default 12), maximum 64 or more, all printable characters allowed, no composition rules, rotation only on evidence of compromise.
  2. 02Maintain a roster of 200 synthetic accounts with role-based policy sets stored in MySQL, clearly marked as fictional test data.
  3. 03Evaluate any candidate password against the active policy and return a verdict per rule: length, blocklist, personal-information match, keyboard walks, repeats and sequences.
  4. 04Estimate strength as entropy bits and offline crack time at a documented guess rate, with the assumptions printed on the report.
  5. 05Check candidate passwords against the public Pwned Passwords corpus using a k-anonymity range query that transmits only a five-character SHA-1 prefix, with an offline fallback to the bundled blocklist.
  6. 06Produce per-account and aggregate compliance reports with CSV export for the IT office's records.
  7. 07Provide a trainer mode with a live strength meter and plain-language feedback for staff hygiene sessions.
  8. 08Apply secure coding throughout: bcrypt-hashed storage of demo passwords, prepared statements for every query, no plaintext secrets in logs, and an audit trail of evaluation runs.

Scope

In scope

  • A single-user Java Swing desktop application for the IT office; Windows/Linux/macOS where Java 17 runs.
  • Synthetic accounts only: 200 seeded fictional identities with roles and policy sets.
  • Policy editor, evaluation engine with per-rule verdicts, entropy and crack-time estimates.
  • Breach check through the Pwned Passwords k-anonymity range API, plus an offline mode.
  • Bulk audit from CSV, compliance reports, CSV export, audit log.
  • Trainer mode with strength meter and a short lesson.

Out of scope (v1)

  • Any connection to real college systems — LDAP/Active Directory integration, live password-reset hooks or reading real user hashes.
  • Collection or storage of any real person's password; the tool audits candidate passwords typed in during the session.
  • MFA management, SSO, or password-manager provisioning (discussed as future scope).
  • Argon2id storage option (bcrypt is used; Argon2id is listed as future work).
  • Multi-language UI and scheduled automatic audits.

Methodology

The project follows the Waterfall model with stage gates, chosen deliberately for an individual IGNOU project whose requirements are fixed and well understood, and because IGNOU's own flow — synopsis approval before implementation, report at the end — mirrors staged delivery. Each stage ends with a guide sign-off.

StageWeeksActivitiesDeliverable
Requirement analysis1–2Study NIST SP 800-63B and CERT-In booklet rules; list functional/non-functional requirements; define the synthetic-data ethics rulesSRS + synopsis for approval
System design3–4DFDs (Level 0, 1 and Level 2 for the evaluate process), ER diagram, class diagram, schema, UI mock-upsDesign document
Implementation I5–6Database schema, account manager, policy editor, policy-check rulesWorking core with seeded data
Implementation II7–8Dictionary/pattern checks, entropy and crack-time, breach-check service with offline fallbackComplete engine
Implementation III9Bulk audit, CSV import/export, trainer mode, audit logFeature-complete app
Testing10–11Unit tests per rule (boundaries), integration tests with MySQL, black-box test-case tables, security checklist reviewTest report
Documentation12Final report (50–80 pages), viva preparationSubmission

Testing approach: unit tests for every rule (an 11-character password fails a 12-character policy; qwerty123 fails the walk check; correct-horse-battery-staple passes length and dictionary checks; a blocked breached password fails the corpus check offline), integration tests running the engine against a test database, and documented black-box cases for every screen. The security checklist (hashed storage, prepared statements, no sensitive logging) is reviewed line by line in the report's security section.

Architecture & tech stack

5 diagrams · 5 technologies · 2 min read

  • Java 17 (Swing)
  • MySQL
  • JDBC
  • jBCrypt
  • Java HttpClient (JDK built-in)

PassCheck Auditor is a classic three-layer desktop application:

  1. UI layer — Java Swing frames and panels: the roster table, the policy editor, the evaluator panel with the live strength meter, and the report viewer. No business logic lives here.
  2. Service layer — the policy engine (rule objects evaluated in order, each returning a pass/fail and a reason), the estimator (entropy and crack time), the breach-check service (JDK HttpClient, SHA-1 prefix, HTTPS), and the report builder.
  3. Data layer — MySQL 8 through JDBC with prepared statements; jBCrypt hashes any demo password before it is stored; an audit-log table records every evaluation run.
flowchart TD
  UI["Swing UI: roster, policy editor, evaluator, reports"] --> SVC
  SVC["Service layer"] --> PE["Policy engine: rule objects"]
  SVC --> ES["Estimator: entropy + crack time"]
  SVC --> BC["Breach-check service"]
  BC -->|"SHA-1 first 5 chars only, over HTTPS"| API[("Pwned Passwords range API")]
  PE --> DAO["DAO: prepared statements"]
  ES --> DAO
  BC --> DAO
  DAO --> DB[("MySQL 8")]
  DAO --> AL["Audit log"]

ER diagram

erDiagram
  POLICY_SET ||--o{ ACCOUNT : "governs"
  ACCOUNT ||--o{ EVALUATION : "is tested in"
  EVALUATION ||--o{ VIOLATION : "reports"
  EVALUATION ||--o{ AUDIT_LOG : "is recorded in"

  POLICY_SET {
    int id PK
    string name
    int minLength
    int maxLength
    string blocklistRef
    bool rotationEvidenceOnly
  }
  ACCOUNT {
    int id PK
    string username UK
    string role
    int policySetId FK
    string demoPasswordHash
    bool synthetic
  }
  EVALUATION {
    int id PK
    int accountId FK
    string verdict
    int entropyBits
    int breachCount
    datetime evaluatedAt
  }
  VIOLATION {
    int id PK
    int evaluationId FK
    string ruleCode
    string message
  }
  AUDIT_LOG {
    int id PK
    int evaluationId FK
    string action
    datetime loggedAt
  }

DFD — Level 0, Level 1 and Level 2 (evaluate process)

flowchart LR
  O(["IT Officer"]) -- "policy, candidate passwords, audit request" --> SYS(("PassCheck Auditor"))
  SYS -- "verdicts, compliance report, CSV" --> O
  API(["Pwned Passwords API"]) -- "hash-suffix list" --> SYS
flowchart TB
  O(["IT Officer"]) --> P1["1.0 Manage synthetic accounts"]
  P1 <--> D1[("D1 Accounts")]
  O --> P2["2.0 Evaluate password"]
  O --> P3["3.0 Run bulk audit"]
  P2 --> D2[("D2 Policy sets")]
  P2 --> P4["4.0 Build report"]
  P3 --> P2
  P4 <--> D3[("D3 Evaluations & audit log")]
  P4 -- "CSV report" --> O
  P2 --> E1(["Pwned Passwords API"])
flowchart TB
  P2["2.0 Evaluate password"] --> P21["2.1 Normalise input"]
  P21 --> P22["2.2 Policy rule checks: length, chars, personal info"]
  P22 --> P23["2.3 Dictionary, walk, repeat and sequence checks"]
  P23 --> P24["2.4 Breach check via k-anonymity prefix"]
  P24 --> P25["2.5 Score, verdict and reasons"]
  P22 <--> D2[("D2 Policy sets")]
  P23 <--> D4[("D4 Blocklist")]
  P25 --> D3[("D3 Evaluations")]

The breach check hashes the candidate with SHA-1, sends only the first five hex characters to GET /range/{prefix}, downloads the matching suffixes and compares locally — the full hash and the password never leave the machine, which is the k-anonymity property the report's security section explains.

Modules

6 modules

  1. Module 01

    Synthetic Account Manager

    Creates and lists the 200 fictional accounts, each with a role, an assigned policy set and a synthetic flag that is checked before any write. Demo passwords typed during setup are bcrypt-hashed by jBCrypt before storage, and the seed data ships with the bundle so a fresh install is ready for the demo without touching any real identity.

  2. Module 02

    Policy Editor & Policy Sets

    Lets the officer define role-based policy sets — minimum/maximum length, allowed characters, blocklist reference, personal-info fields to match against, and an explicit evidence-only rotation switch. Every set records the NIST clause it implements, so the compliance report can quote the rule, not just name it.

  3. Module 03

    Password Evaluation Engine

    Evaluates a candidate password rule by rule in a fixed order: length boundaries, character-set acceptance, personal-information substring match against the account's synthetic metadata, blocklist lookup (binary search over a sorted bundled list), keyboard-walk detection across three qwerty-row strings and their reverses, and runs of repeated characters or sequential digits. Each rule returns a pass/fail with a human-readable reason.

  4. Module 04

    Breach-Check Service

    Hashes the candidate with SHA-1, sends only the first five hex characters to the Pwned Passwords range API over HTTPS, matches the returned suffixes locally and returns the breach count. A connectivity failure falls back to the bundled blocklist and marks the verdict as offline, so the demo works without internet.

  5. Module 05

    Strength Estimator & Trainer Mode

    Computes entropy from the detected character pool and length, converts it to an estimated offline crack time at a stated guess rate (10^11 guesses per second, printed beside the figure), and drives the trainer's live strength meter. The trainer explains each finding in one sentence — why a passphrase beats symbol soup, and why rotation should follow evidence of compromise.

  6. Module 06

    Bulk Audit, Reports & Audit Log

    Imports a CSV of test passwords, runs every row through the engine, and writes one EVALUATION row with its VIOLATION rows per account. The report viewer summarises compliance per policy set (pass rate, most-violated rule, breach-corpus hit rate) and exports CSV. Every run appends to the audit log; no candidate password is ever logged, only its verdict and rule codes.

Slides

12 slides · titles free · bullets, notes and the .pptx unlock

  1. Slide 1

    PassCheck Auditor — Password Policy Audit & Hygiene Trainer

  2. Slide 2

    The Problem: Rules Without Evidence

  3. Slide 3

    Proposed System

  4. Slide 4

    Objectives

  5. Slide 5

    Technology Stack & Justification

  6. Slide 6

    System Architecture

  7. Slide 7

    Database Design

  8. Slide 8

    DFD up to Level 2

  9. Slide 9

    Demo

  10. Slide 10

    Security Section Highlights

  11. Slide 11

    Testing

  12. Slide 12

    Conclusion & Future Scope

Bullets, speaker notes and the .pptx · ₹2,000

The titles above are the real outline. The rest is what you present from.

Unlock for ₹2,000

Viva questions & answers

3 of 17 answered free · 14 unlock

Read each answer, close it, and say it in your own words. Your viva will ask. Now you'll know.

  1. 01Concept

    Why did NIST SP 800-63B drop mandatory composition rules and periodic password rotation?

    Because evidence showed both rules made passwords worse, not better: forced composition pushes users toward predictable patterns like Password@123 that satisfy the rule yet appear on every breach list, and calendar rotation makes users increment a suffix they reuse everywhere. NIST instead requires minimum length, blocklist checks against known-breached passwords, and rotation only when there is evidence of compromise — which is exactly what my policy sets encode.

  2. 02Concept

    What is entropy in this context and how do you estimate it?

    Entropy measures the unpredictability of a password in bits — log base two of the size of the space an attacker must search. My estimator identifies which character pools the candidate actually uses (lowercase, uppercase, digits, symbols), multiplies the pool size by the length, and takes the logarithm. I print the assumed guess rate, ten to the eleventh guesses per second, next to the crack-time figure so the number is honest about its assumptions.

  3. 03Concept

    What is k-anonymity and why does the breach check use it?

    K-anonymity means a query is indistinguishable from at least k minus one other possible queries. The Pwned Passwords range API applies it to passwords: I hash the candidate with SHA-1 and send only the first five hex characters, which match billions of possible passwords, so the server learns nothing about my candidate. The full suffix list comes back and the match happens locally, so neither the password nor its complete hash ever leaves the machine.

+14 more questions, with answers

Try the free ones out loud first. Your examiner will not accept “it's in the PPT”.

Source code & how to run

7 steps · complete source code · unlocks with the project

Unlocks with the project · ₹2,000

7 steps · source code zip

Prerequisites, install, seed data and tests, written for demo day. Plus the complete source.

Unlock for ₹2,000

READMEFIRST

274 words · unlocks with the project

What to change before it goes anywhere near a submission. Skipping it is how the demo fails live.

Unlocks with the project · ₹2,000

274 words · ~1 min read

The checklist of things to rename, re-seed and re-think so the project reads as yours.

Unlock for ₹2,000

Instructions

392 words · unlocks with the project

How to study it, adapt it and walk your examiner through it, step by step.

Unlocks with the project · ₹2,000

392 words · ~2 min read

Report structure, formatting rules and the submission checklist your department will grade.

Unlock for ₹2,000

References

10 sources

  1. NIST Special Publication 800-63B — Digital Identity Guidelines: Authentication and Lifecycle Management (memorized secrets)
  2. Have I Been Pwned — Pwned Passwords API v3 documentation (k-anonymity range search)
  3. OWASP Password Storage Cheat Sheet
  4. OWASP Authentication Cheat Sheet
  5. IGNOU — BCSP-064 Project Guidelines (official PDF)
  6. CERT-In — Cyber Security Awareness booklet (safe password practices)
  7. Oracle — Java SE 17 API documentation
  8. MySQL 8.0 Reference Manual
  9. Niels Provos and David Mazières, "A Future-Adaptable Password Scheme", USENIX Annual Technical Conference, 1999 (the bcrypt paper)
  10. Niels Ferguson, Bruce Schneier and Tadayoshi Kohno, Cryptography Engineering: Design Principles and Practical Applications, Wiley

Cite this bundle

OnlyProjects. (2026). Password Policy Auditor & Hygiene Trainer for Synthetic Accounts (Java/MySQL): BCA Cyber Security project bundle [Educational resource]. https://onlyprojects.online/projects/bca-cyber-password-policy-auditor-synthetic-accounts

Future scope

1 min read

  • Argon2id as an additional storage option alongside bcrypt, with a benchmark comparison in the report.
  • Tin-check for dates and roll numbers in the pattern engine (birthdates and register numbers are the most common personal-info leaks in Indian colleges).
  • Policy-gap scorecard: compare the college's written circular, entered once, against the NIST-aligned sets and print a gap list the office can act on.
  • Have-I-Been-Pwned account check (email-based, with consent) extended to the synthetic roster's addresses.
  • Multilingual trainer mode in Hindi and one regional language for staff sessions.
  • Scheduled audits that re-run the last bulk CSV monthly and track the pass rate over time.

Keep browsing

Same degree, same syllabus slot, different idea. Pick the one your guide will actually approve.

BCACode included

Web Development

Smart Hostel Management System

Room allocation, complaints and mess billing without the register

  • Next.js
  • TypeScript
  • Node.js
  • +3

intermediate8 wk2 students