A desktop security application built in Java that provides file integrity verification and AES-256 file encryption.
- Compute MD5, SHA-256, and SHA-512 hashes for any file
- Save a hash baseline and verify file integrity at any time
- Detect file tampering by comparing hashes
- Encrypt files using AES-256-CBC with a password
- Decrypt previously encrypted files with the correct password
- AES-256-CBC encryption with a unique random IV per operation
- PBKDF2WithHmacSHA256 key derivation with 65,536 iterations
- Unique random salt per encryption to defeat rainbow table attacks
- Salt and IV stored in the encrypted file header (non-secret)
- Password never stored or written to disk
model/ → Data objects (FileRecord, EncryptionResult)
core/ → Cryptographic engines (HashEngine, EncryptionEngine, FileManager)
service/ → Orchestration layer (IntegrityService, EncryptionService)
ui/ → Swing GUI (MainWindow, HashPanel, EncryptPanel)
- Java 17 or higher
- Clone the repository
- Open in IntelliJ IDEA
- Run
Main.java
- Java 21
- Java Swing
javax.crypto— AES-256-CBC encryptionjava.security.MessageDigest— MD5, SHA-256, SHA-512 hashingPBKDF2WithHmacSHA256— secure key derivation