Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 13 additions & 13 deletions data/projects.json
Original file line number Diff line number Diff line change
Expand Up @@ -275,9 +275,9 @@
"starter_code": "starter_code/survey_form/index.html"
},
{
"id":10,
"id": 10,
"title": "API ETL Pipeline",
"skills": ["Python","pandas","requests"],
"skills": ["Python", "pandas", "requests"],
"level": "Intermediate",
"interest": "Data",
"time": "Medium",
Expand All @@ -289,17 +289,17 @@
"Generate summary statistics",
"Export the processed CSV for any other Analytics projects"
],
"tech_stack": ["Python", "pandas","requests","JSON"],
"tech_stack": ["Python", "pandas", "requests", "JSON"],
"roadmap": [
"Step 1: Install required modules via pip",
"Step 2: Find a public API key for this project",
"Step 3: Fetch the data from the API using requests",
"Step 4: Validate the response you just fetched From the API",
"Step 5: Normalize the nested JSON data by flattening it",
"Step 6: Use the fetched data to build a pandas dataframe",
"Step 7: Handle missing values or duplicate values",
"Step 8: Export the cleaned dataset to CSV format",
"Step 9: Generate a summary for the newly created CSV dataset",
"Step 1: Install required modules via pip",
"Step 2: Find a public API key for this project",
"Step 3: Fetch the data from the API using requests",
"Step 4: Validate the response you just fetched From the API",
"Step 5: Normalize the nested JSON data by flattening it",
"Step 6: Use the fetched data to build a pandas dataframe",
"Step 7: Handle missing values or duplicate values",
"Step 8: Export the cleaned dataset to CSV format",
"Step 9: Generate a summary for the newly created CSV dataset",
"Step 10: Test the file with at least two different public APIs"
],
"resources": [
Expand All @@ -311,7 +311,7 @@
],
"starter_code": "starter_code/api_data_pipeline.py"
},
{
{
"id": 11,
"title": "AI Resume Analyzer",
"skills": [
Expand Down
39 changes: 39 additions & 0 deletions starter_code/secure-vault/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Secure Crypto Vault (Python)

A professional-grade CLI utility demonstrating industry-standard security implementations for credential management.

## Features
- **Authenticated Encryption:** Uses AES-256-GCM (Galois/Counter Mode) for both confidentiality and integrity.
- **Secure Key Derivation:** Implements PBKDF2-HMAC-SHA256 with 600,000 iterations (OWASP recommendation).
- **Master Password Protection:** Uses the `getpass` module to mask password entry.
- **Persistent Storage:** Encrypted credentials are saved to a local `vault.json` file.

## Setup Instructions
1. Navigate to the project folder:
```bash
cd starter_code/secure-vault

2. **Install the required security library:**
```bash
pip install -r requirements.txt

3. **Run the application:**
```bash
python vault.py

## Security Implementation Details
This project prioritizes high-entropy security and follows modern cryptographic standards:

- **Key Derivation (PBKDF2):**
- **Algorithm:** HMAC-SHA256
- **Iterations:** 600,000 (Aligned with OWASP 2024 password storage recommendations).
- **Salt:** 16-byte cryptographically secure random salt generated via `os.urandom()`.

- **Authenticated Encryption (AES-GCM):**
- **Mode:** AES-256-GCM (Galois/Counter Mode).
- **Integrity:** Unlike standard AES-CBC, GCM provides built-in authentication, ensuring that the ciphertext has not been tampered with.
- **Nonce:** A unique 12-byte initialization vector (IV) is generated for every individual entry.

- **Storage:**
- Sensitive data is never stored in plain text.
- The `vault.json` file contains only the Salt, Nonce, and Ciphertext in hexadecimal format.
Binary file added starter_code/secure-vault/requirements.txt
Binary file not shown.
Loading
Loading