Transmit encrypted text over audio using FSK modulation, with strong encryption and error correction. Perfect for secure radio, audio, or offline data transfer.
- AES-256 and RSA encryption (password, key, or public/private key)
- Reed-Solomon error correction (up to 32 byte errors)
- FSK2/4/8/16 modulation for robust audio transmission
- WAV output, adjustable bitrate (100–1200 bps)
- No metadata files: all info in audio or password
- Built-in performance analysis with visual chart output
Analyze performance and view results as a chart:
python analyze_performance.pyThis generates a comprehensive performance chart:
Clone this repo and install dependencies:
pip install -r requirements.txtEncrypt with a password:
python encrypt.py -m "Secret message" -p "password" -o msg.wavDecrypt:
python decrypt.py -i msg.wav -p "password"You can choose the modulation scheme for both encryption and decryption:
python encrypt.py -m "Secret message" -p "password" -modulation fsk4 -o msg.wav
python decrypt.py -i msg.wav -p "password" -modulation fsk4Optionally, add a context string for extra security (acts as a namespace/salt):
python encrypt.py -m "Secret message" -p "password" -context "MyNetwork" -o msg.wav
python decrypt.py -i msg.wav -p "password" -context "MyNetwork"RSA mode:
python encrypt.py -genkeys -keyname mykeys
python encrypt.py -m "Top secret" -pub mykeys_public.pem -o msg.wav
python decrypt.py -i msg.wav -priv mykeys_private.pemRun all tests:
python test.pyAnalyze performance:
python analyze_performance.pyFSKrypt is released under the GNU GPLv3. See LICENSE for details.
- Encryption:
- AES-256-CBC (symmetric, with PBKDF2-HMAC-SHA256 key derivation)
- IV (16 bytes) derived from password using PBKDF2-HMAC-SHA256
- RSA-2048 (asymmetric, OAEP padding) for hybrid encryption
- Error Correction:
- Reed-Solomon (64 parity bytes, corrects up to 32 byte errors)
- Salt/Context:
- PBKDF2 uses a context string as salt for key/IV derivation (default: 'AudioEncryptKey2025' and 'AudioEncryptIV2025')
- Modulation:
- FSK2/4/8/16 (bit-to-tone mapping)
- 44.1 kHz WAV output, 16-bit PCM
- No metadata files: All info is embedded in the audio or derived from password/context
