A Go-based encryption and data transformation library designed for secure handling of sensitive data. Enchantrix provides composable transformation pipelines, a flexible binary container format, and defense-in-depth encryption with pre-obfuscation.
- Sigil Transformation Framework - Composable, reversible data transformations (encoding, compression, hashing)
- Pre-Obfuscation Layer - Side-channel attack mitigation for AEAD ciphers
- .trix Container Format - Protocol-agnostic binary format with JSON metadata
- Multiple Hash Algorithms - SHA-2, SHA-3, BLAKE2, RIPEMD-160, and the custom LTHN algorithm
- Full PGP Support - Key generation, encryption, decryption, signing, and verification
- RSA Operations - Key generation, encryption, and decryption
- CLI Tool -
trixcommand for encoding, decoding, and transformations
go get github.com/Snider/Enchantrixgo install github.com/Snider/Enchantrix/cmd/trix@latestpackage main
import (
"fmt"
"github.com/Snider/Enchantrix/pkg/enchantrix"
)
func main() {
// Create sigils
hexSigil, _ := enchantrix.NewSigil("hex")
base64Sigil, _ := enchantrix.NewSigil("base64")
// Apply transformations
data := []byte("Hello, Enchantrix!")
encoded, _ := enchantrix.Transmute(data, []enchantrix.Sigil{hexSigil, base64Sigil})
fmt.Printf("Encoded: %s\n", encoded)
}package main
import (
"fmt"
"github.com/Snider/Enchantrix/pkg/crypt"
)
func main() {
service := crypt.NewService()
hash := service.Hash(crypt.SHA256, "Hello, World!")
fmt.Printf("SHA-256: %s\n", hash)
// LTHN quasi-salted hash
lthnHash := service.Hash(crypt.LTHN, "Hello, World!")
fmt.Printf("LTHN: %s\n", lthnHash)
}package main
import (
"fmt"
"github.com/Snider/Enchantrix/pkg/trix"
)
func main() {
container := &trix.Trix{
Header: map[string]interface{}{
"content_type": "text/plain",
"created_at": "2025-01-13T12:00:00Z",
},
Payload: []byte("Secret message"),
InSigils: []string{"gzip", "base64"},
}
// Pack with sigils
container.Pack()
// Encode to binary
encoded, _ := trix.Encode(container, "MYAP", nil)
fmt.Printf("Container size: %d bytes\n", len(encoded))
}# Encode with sigils
echo "Hello, Trix!" | trix encode --output message.trix --magic TRIX base64
# Decode
trix decode --input message.trix --output message.txt --magic TRIX base64
# Hash data
echo "Hello, World!" | trix hash sha256
# Apply sigil directly
echo "Hello" | trix hex
# Output: 48656c6c6fEnchantrix includes formal RFC-style specifications for its core protocols:
| RFC | Title | Description |
|---|---|---|
| RFC-0001 | Pre-Obfuscation Layer | Side-channel mitigation for AEAD ciphers |
| RFC-0002 | TRIX Container Format | Binary container with JSON metadata |
| RFC-0003 | Sigil Framework | Composable data transformation interface |
| RFC-0004 | LTHN Hash | Quasi-salted deterministic hashing |
| Category | Sigils |
|---|---|
| Encoding | hex, base64 |
| Compression | gzip |
| Formatting | json, json-indent |
| Transform | reverse |
| Hashing | md4, md5, sha1, sha224, sha256, sha384, sha512, sha3-224, sha3-256, sha3-384, sha3-512, sha512-224, sha512-256, ripemd160, blake2s-256, blake2b-256, blake2b-384, blake2b-512 |
Enchantrix/
├── cmd/trix/ # CLI tool
├── pkg/
│ ├── enchantrix/ # Sigil framework and crypto sigils
│ ├── trix/ # .trix container format
│ └── crypt/ # Cryptographic services (hash, RSA, PGP)
├── rfcs/ # Protocol specifications
├── examples/ # Usage examples
└── docs/ # MkDocs documentation
Full documentation is available via MkDocs:
# Install dependencies
pip install mkdocs mkdocs-material
# Serve locally
mkdocs serve -a 127.0.0.1:8000
# Build static site
mkdocs build --strict- Go 1.25 or later
# Run all tests
go test ./...
# Run with race detection
go test -race ./...
# Run with coverage
go test -coverprofile=coverage.out ./...This project follows strict TDD methodology. All new functionality must include comprehensive tests.
Built with GoReleaser:
# Snapshot release (local, no publish)
goreleaser release --snapshot --clean
# Production release (requires Git tag)
goreleaser release --cleanSee LICENCE for details.