A domain-specific programming language for DNA-based cryptography
Project description
DNACrypt
A Domain-Specific Programming Language for DNA-Based Cryptography
Overview
DNACrypt is a novel programming language that seamlessly integrates cryptography and DNA sequence manipulation. It enables encryption, DNA encoding, biological steganography, and digital signatures in a clean, imperative syntax.
let message = "Secret data" let key = generate(AES256) let encrypted = AES256(message, key: key, mode: GCM) let dna = DNA.encode(encrypted, mapping: BINARY_2BIT) print(dna) // DNA(ATGCCGTA...)
Features
Cryptography
Symmetric Encryption: AES-128, AES-256 (GCM, CBC modes) Asymmetric Keys: RSA-2048/4096, ECDSA P-256/384/521 Hashing: SHA-256, SHA3-256, SHA3-512, BLAKE2b Key Derivation: PBKDF2 with configurable iterations Digital Signatures: ECDSA, RSA signatures Secure Random: Cryptographically secure random generation
DNA Operations Encoding: Binary to DNA conversion (multiple schemes) Decoding: DNA to binary conversion Transformations: Complement, reverse, reverse complement Analysis: GC content, sequence validation, motif finding Biological: Transcription (DNA→RNA), Translation (DNA→Protein) ORF Finding: Locate open reading frames Language Features
Type System: Static type checking with annotations Control Flow: If-else statements, loops (coming) Functions: Built-in functions with named parameters Clean Syntax: Imperative, easy to learn Error Handling: Try-catch blocks (coming)
Quick Start
Installation
Install from PyPI (when published)
pip install dnacrypt-lang
Or install from source
git clone https://github.com/Harshith2412/dnacrypt.git cd dnacrypt pip install -e .
Hello World
Create hello.dnac:
let greeting = "Hello, DNACrypt!" print(greeting)
Run it:
dnacrypt run hello.dnac
First Encryption
Create encrypt.dnac:
let secret = "My secret message" let key = generate(AES256) let encrypted = AES256(secret, key: key, mode: GCM)
print("Original:") print(secret)
print("Encrypted:") print(encrypted)
let decrypted = decrypt(encrypted, key: key) print("Decrypted:") print(decrypted)
Run:
dnacrypt run encrypt.dnac
Documentation
Language Guide - Complete tutorial with examples API Reference - Function and method documentation Setup Guide - Installation and configuration
Examples
DNA Encoding
let message = "Encode this" let key = generate(AES256) let encrypted = AES256(message, key: key, mode: GCM) let dna = DNA.encode(encrypted, mapping: BINARY_2BIT)
print("DNA Sequence:") print(dna)
let gc = DNA.gc_content(dna) print("GC Content:") print(gc)
Digital Signatures
let document = "I agree to the terms" let keys = generate_pair(ECDSA_P256)
let signature = SIGN(document, key: keys.private, algorithm: ECDSA)
let valid = VERIFY(document, signature: signature, key: keys.public) if valid { print("✓ Signature verified") }
Complete Pipeline
// Encrypt → Encode → Sign → Verify let message = "Secret mission" let password = "secure_password"
let salt = random_bytes(16) let key = derive_key( password: password, salt: salt, algorithm: PBKDF2, iterations: 100000 )
let encrypted = AES256(message, key: key, mode: GCM) let dna = DNA.encode(encrypted, mapping: BINARY_2BIT)
let signing_keys = generate_pair(ECDSA_P256) let signature = SIGN(dna, key: signing_keys.private, algorithm: ECDSA)
let verified = VERIFY(dna, signature: signature, key: signing_keys.public) print(verified) // true
Use Cases
- Steganography
Hide encrypted data in synthetic DNA sequences that appear as legitimate genomic data.
- DNA-Based Intrusion Detection
Apply biological immune system principles to cybersecurity using DNA-encoded patterns.
- Secure Data Storage
Store encrypted information as DNA sequences in biological databases.
- Research & Education
Teach cryptography and bioinformatics concepts in an integrated manner.
- Biological Computing
Explore novel computing paradigms using DNA as a storage medium.
Architecture
┌─────────────────────────────────────────┐ │ DNACrypt Source Code (.dnac) │ └────────────────┬────────────────────────┘ ↓ ┌─────────────────────────────────────────┐ │ Lexer (Tokenization) │ │ • 60+ token types │ │ • DNA sequence detection │ └────────────────┬────────────────────────┘ ↓ ┌─────────────────────────────────────────┐ │ Parser (AST Generation) │ │ • 25+ AST node types │ │ • Operator precedence │ └────────────────┬────────────────────────┘ ↓ ┌─────────────────────────────────────────┐ │ Semantic Analyzer (Type Checking) │ │ • Type validation │ │ • Scope checking │ └────────────────┬────────────────────────┘ ↓ ┌─────────────────────────────────────────┐ │ Interpreter (Execution) │ │ • Runtime environment │ │ • Standard library │ └─────────────────────────────────────────┘
Language Statistics
Lines of Code: ~5,000+ Modules: 7 (4 core + 3 stdlib) Built-in Functions: 30+ Data Types: 15+ Tests: 18/18 passing Test Coverage: 100% Command Line Usage
Run a program
dnacrypt run program.dnac
Interactive REPL
dnacrypt repl
Execute code directly
dnacrypt -c "let x = 10; print(x)"
Show version
dnacrypt version
Get help
dnacrypt help
Python API
import dnacrypt
Run DNACrypt code
dnacrypt.run(''' let message = "Hello!" print(message) ''')
Run from file
dnacrypt.run_file('program.dnac')
Access compiler components
from dnacrypt import DNACryptLexer, DNACryptParser, DNACryptInterpreter
lexer = DNACryptLexer(code) tokens = lexer.tokenize()
parser = DNACryptParser(tokens) ast = parser.parse()
interpreter = DNACryptInterpreter() interpreter.interpret(ast)
Testing
Run basic tests (15 tests)
python3 tests/test_dnacrypt.py
Run system tests (3 comprehensive tests)
python3 tests/complete_system_test.py
All tests should pass: 18/18 ✓
Learning Resources
Tutorials
Language Guide - Complete tutorial API Reference - Function documentation Examples - Sample programs Example Programs
examples/hello.dnac - Hello world examples/encryption.dnac - Basic encryption examples/dna_analysis.dnac - DNA operations examples/secure_comm.dnac - Complete pipeline examples/steganography.dnac - Hide data in DNA Research Applications DNACrypt was developed for research in:
DNA-Based Intrusion Detection Systems - Apply biological immune principles to cybersecurity Biological Steganography - Hide data in synthetic DNA sequences Adversarial Machine Learning - In biological computing contexts Novel Cryptographic Protocols - DNA-based primitives Bioinformatics Education - Integrated crypto + bio teaching Publications
If you use DNACrypt in research, please cite:
@software{dnacrypt2025, author = {Harshith}, title = {DNACrypt: A Domain-Specific Language for DNA-Based Cryptography}, year = {2025}, institution = {Northeastern University}, url = {https://github.com/yourusername/dnacrypt} }
Contributing
Contributions are welcome! Areas for contribution:
Additional encryption algorithms (ChaCha20, etc.) More DNA encoding schemes Biological realism improvements Loop execution implementation User-defined functions File I/O operations Performance optimizations Documentation improvements Example programs Bug fixes Development Setup
Clone repository
git clone https://github.com/Harshith2412/dnacrypt.git cd dnacrypt
Install in development mode
pip install -e .
Run tests
python3 tests/test_dnacrypt.py
Make changes and test
dnacrypt run examples/test.dnac
Roadmap
Version 1.0 (Current)
Complete lexer, parser, interpreter Cryptographic operations DNA encoding/decoding Type checking CLI tool Comprehensive tests Version 1.1 (Planned)
[ ] User-defined functions execution [ ] While/For loop execution [ ] Try-catch execution [ ] File I/O operations [ ] Array/Dictionary operations [ ] REPL improvements Version 2.0 (Future)
[ ] Compilation to bytecode [ ] Performance optimizations [ ] Package manager [ ] VS Code extension [ ] Web-based playground [ ] Debugger [ ] Standard library expansion
License
MIT License - See LICENSE file for details.
Author
Harshith Madhavaram MS in Cybersecurity, Northeastern University Research Focus: DNA-based Intrusion Detection Systems, Adversarial ML, Cybersecurity
Acknowledgments
Python cryptography library for crypto primitives Standard bioinformatics algorithms Modern compiler design principles Research in biological computing
Support
Documentation: See LANGUAGE_GUIDE.md and API_REFERENCE.md Examples: Check examples/ folder Tests: See tests/ for usage examples
Project Status
Version: 1.0.0 Status: Beta (Production Ready) Tests: 18/18 passing (100%) Stability: Stable Maintained: Yes
DNACrypt - Where Cryptography Meets Biology
Built with ❤️ for research, education, and innovation
Copyright © 2025 Harshith Madhavaram. All rights reserved.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dnacrypt_lang-1.0.0.tar.gz.
File metadata
- Download URL: dnacrypt_lang-1.0.0.tar.gz
- Upload date:
- Size: 53.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f7315f1035ec78132dc80cbcd620c48b08384a8c3245b674791ed8f4e18be31
|
|
| MD5 |
0f774e396286d2fd222830ebbdcad8f7
|
|
| BLAKE2b-256 |
98c9744d14ef50a974aef4973702c2052a6c077042dc4ceb60ced9388b740404
|
File details
Details for the file dnacrypt_lang-1.0.0-py3-none-any.whl.
File metadata
- Download URL: dnacrypt_lang-1.0.0-py3-none-any.whl
- Upload date:
- Size: 41.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
024e2752917f91935e502b6146b5136b74920ef05973b95a12541d702603878a
|
|
| MD5 |
87b6641004b4fb69f0f052dfb21da49d
|
|
| BLAKE2b-256 |
c065915def4b4a3294e9cb5668b1d8af057f0b509b1f893719176aa0a73b3df1
|