smart-dynamic-path
Dynamic, deterministic, time-dependent path generation
No storage. No database. No dependencies.
smart-dynamic-path — dynamic, deterministic, time-dependent path generation. Generate cryptographically secure paths that change automatically based on time (day, month, hour) from a secret phrase.
Perfect for hiding admin panels, creating temporary access links, or building time-based API keys.
Core idea: One secret phrase → one deterministic path per time period. Same phrase + same day = same path. No storage. No database. Just pure math.
Use Cases:
- Hide Django admin:
/admin/a1b2c3d4e5f6g7h8/ - Temporary download links that expire after a day
- Time-rotating API endpoints
- "Secret room" pattern for any web framework
- No Storage — paths are regenerated, not stored
- No Database — no persistence layer required
- No Dependencies — pure Python, uses only hashlib
- Deterministic — same input always produces same output
- Time-Based Rotation — day, month, hour, or static
- CLI & Python API — flexible usage options
- Cryptographically Secure — SHA-256 based
pip install smart-dynamic-path
Local usage without installation:
git clone https://github.com/smartlegionlab/smart-dynamic-path cd smart-dynamic-path python -m smart_dynamic_path.cli --secret "my secret phrase" python -m smart_dynamic_path.cli --secret "my secret phrase" --period month --full python -m smart_dynamic_path.cli --secret "my secret phrase" --key-only
| Command | Output |
|---|---|
smart-dynamic-path --secret "secret" | Full info (key + path + URL) |
smart-dynamic-path --secret "secret" --key-only | Only SECRET_KEY (64 hex) |
smart-dynamic-path --secret "secret" --path-only | Only path (32 hex) |
smart-dynamic-path --secret "secret" --full | Only full URL /xxxx/ |
smart-dynamic-path --secret "secret" --period month --full | Monthly rotation |
smart-dynamic-path --secret "secret" --prefix admin --full | With prefix |
from smart_dynamic_path import generate_secret_key, generate_path, secret_to_path
# From secret phrase
key = generate_secret_key("my secret phrase")
path = generate_path(key, period='day')
key, path = secret_to_path("my secret phrase", period='day')
Quick start:
from smart_dynamic_path import generate_path, secret_to_path
# Generate path from secret key
path = generate_path(secret_key='your_64_hex_secret_key', period='day')
# Output: "4e30939634dfc6617f10a2f8fe259f44"
# With prefix
path = generate_path(secret_key='...', period='day', prefix='admin')
# Output: "admin/4ab3b83e39bbb1d7e31e0978ea8cea05"
# From secret phrase (local use only)
key, path = secret_to_path('my secret phrase', period='day')
SECRET_KEY = SHA256(secret_phrase) # 64 hex chars (256 bits) PATH = SHA256(SECRET_KEY + date)[:16].hex() # 32 hex chars (128 bits)
- Secret phrase → SECRET_KEY (256 bits)
- SECRET_KEY + current date/time → path (128 bits)
- Path changes automatically based on period (day/month/hour/static)
1. Pointer-Based Security
The path is not stored anywhere. It is regenerated on demand from a secret phrase and current time. There is no stored "pointer" — only the ability to compute it.
2. Local Data Regeneration
The exact path is computed locally on the developer's machine using only the secret phrase and date, without accessing any server.
3. Position-Candidate-Hypothesis (PCH)
Among all possible paths (2¹²⁸ candidates), only one specific path generated by the secret phrase is valid at any given time.
- No Storage — paths are regenerated, not stored
- Deterministic — same input always produces same output
- 32 hex chars = 2¹²⁸ possible paths (no brute force)
- Time-based rotation limits exposure window
By using this software, you agree to the full disclaimer terms.
Software provided "AS IS" without warranty. You assume all risks.
Full legal disclaimer: See DISCLAIMER.md
License: BSD 3-Clause License