Password Manager is a secure Flutter application for storing and managing user credentials, built with Dart and Firebase. It ensures strong encryption, email verification, and two-factor authentication (2FA) to protect sensitive data.
- Users register with a username, email, and master password.
- Master password is hashed using PBKDF2 (1000 iterations) with SHA-256 and device ID as salt.
- A unique symmetric key and initialization vector (IV) are generated and encrypted with the hashed password using AES-256-CBC, then stored in Firebase.
- Verification link sent on registration.
- Users must verify their email before accessing the app.
- Optional 2FA using Google Authenticator.
- Secret setup key is encrypted using the symmetric key and IV.
- Users enter the authenticator code during login if 2FA is enabled.
- Users can add, view, update, and delete login credentials.
- Passwords are encrypted with the symmetric key before storage.
- Decryption is performed securely at runtime for viewing.
- Generate passwords with custom length, digits, and special characters.
- Flutter & Dart
- Firebase: Authentication and Firestore
- PBKDF2 + SHA-256 for password hashing
- AES-256-CBC for encryption
- TOTP-based 2FA with Google Authenticator
- No sensitive data stored in plaintext.
- Encryption keys are never stored directly; only encrypted versions are saved.
- 2FA enhances login security for users who opt in.
Follow these steps to set up and run the project:
- Download Flutter SDK from https://flutter.dev/docs/get-started/install
- Extract it to a suitable location (e.g.,
C:\src\flutteron Windows) - Add Flutter to your system PATH:
- Windows:
setx PATH "%PATH%;C:\src\flutter\bin" - macOS/Linux: Add
export PATH="$PATH:[PATH_TO_FLUTTER]/bin"in your shell config file
- Windows:
- Run
flutter doctorin the terminal to verify installation and fix any issues.
git clone https://github.com/Afra107/Password-Manager.git
cd Password-Managerflutter pub get
Download the Firebase config files and place them in the project:
- Android:
android/app/google-services.json - iOS:
ios/Runner/GoogleService-Info.plist
flutter run
- For Chrome/Web:
flutter run -d chrome - For Android Device/Emulator:
flutter run -d <device_id> - For iOS Device/Simulator:
flutter run -d <device_id>
flutter build apk --release
APK will be generated at build/app/outputs/flutter-apk/app-release.apk