- Encrypt/Decrypt using AES-256-GCM with random nonce prepended to ciphertext
- ErrCiphertextTooShort sentinel error for malformed ciphertext
- DeriveKey using Argon2id RFC 9106 params (time=1, mem=64MB, threads=4, keyLen=32)
- NewSalt generates cryptographically random 16-byte salt
- go mod init github.com/salvacybersec/keyhunter
- Pin cobra v1.10.2, viper v1.21.0, ants v2.12.0 to exact versions
- Add modernc.org/sqlite v1.48.1 (CGO-free, pure Go)
- Add petar-dambovaliev/aho-corasick, x/crypto, x/time, lipgloss, testify
- tools.go with build tag to pin dependencies not yet imported in production code
- Tests for AES-256-GCM encrypt/decrypt roundtrip
- Tests for Argon2id key derivation determinism
- Tests for SQLite open with schema tables
- Tests for SaveFinding/ListFindings with encryption contract
- Tests verify raw BLOB does not contain plaintext key