Dynamic, deterministic, time-dependent path generation. No storage. No database. No dependencies. One secret phrase → one deterministic path per time period. Same phrase + same day = same path. No storage. No database. Just pure math.
Project description
Smart Dynamic Path v1.0.1
Dynamic, deterministic, time-dependent path generation. No storage. No database. No dependencies.
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.
Disclaimer
By using this software, you agree to the full disclaimer terms.
Summary: Software provided "AS IS" without warranty. You assume all risks.
Full legal disclaimer: See DISCLAIMER.md
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
and others...
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
Installation
pip install smart-dynamic-path
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')
CLI commands
| 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 |
Python API
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')
How it works
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)
Implemented paradigms
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.
Security
- 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
License
BSD-3-Clause
Author
Alexander Suvorov @smartlegionlab
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 smart_dynamic_path-1.0.1.tar.gz.
File metadata
- Download URL: smart_dynamic_path-1.0.1.tar.gz
- Upload date:
- Size: 5.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f45b869dfcc09fa78134a6af11565ba6e157c42423f0a1738ffe6f91f2802937
|
|
| MD5 |
7da95083e3c1dc9e51cb1a85ab47e301
|
|
| BLAKE2b-256 |
e5898a3a78211c17524597cfb2dd7a3b428b4b984262aa86bc9798f4bf7277e3
|
File details
Details for the file smart_dynamic_path-1.0.1-py3-none-any.whl.
File metadata
- Download URL: smart_dynamic_path-1.0.1-py3-none-any.whl
- Upload date:
- Size: 6.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
399ad6741d8611538a87d1b8df9dcc706271bf95609286eebceed87694db2c8d
|
|
| MD5 |
a48e01c199808ad0fd6aa03a3eb47655
|
|
| BLAKE2b-256 |
89fd0c98c0d399f2ef96f85bde73170a9bdcc09af1507615218ab1e2b5356e0e
|