A cross-platform Python library for generating deterministic, secure passwords that never need to be stored.
- π On-the-fly generation - Passwords are generated when needed, not stored
- π Cryptographically secure - Uses SHA3-512 and system entropy
- π Deterministic output - Same input always produces same password
- π± Cross-platform - Works on Linux, Windows, macOS, and Android (Termux)
- π οΈ Developer-friendly - Clean API with full type hints
- Linux: All.
- Windows: 7/8/10/11?.
- Termux (Android).
pip install smartpasslib
from smartpasslib import SmartPasswordMaster
# Initialize generator
spm = SmartPasswordMaster()
# Generate a smart password
login = "[email protected]"
secret = "mySecretPhrase"
password = spm.generate_smart_password(login=login, secret=secret, length=16)
# Verify later (without storing the password)
key = spm.generate_public_key(login, secret)
is_valid = spm.check_public_key(login, secret, key) # Returns True
The main class for password generation and verification:
from smartpasslib import SmartPasswordMaster
# Generate different types of passwords
basic_pass = SmartPasswordMaster.generate_base_password(length=12)
strong_pass = SmartPasswordMaster.generate_strong_password(length=14)
login = "[email protected]"
secret = "mySecretPhrase"
smart_pass = SmartPasswordMaster.generate_smart_password(login, secret, 16)
# Key management
public_key = SmartPasswordMaster.generate_public_key(login, secret)
is_valid = SmartPasswordMaster.check_public_key(login, secret, public_key)
For managing password metadata:
from smartpasslib import SmartPasswordManager, SmartPassword, SmartPasswordMaster
manager = SmartPasswordManager()
login = "[email protected]"
secret = "mySecretPhrase"
public_key = SmartPasswordMaster.generate_public_key(login, secret)
# Create and store password metadata
password = SmartPassword(login="[email protected]",
key=public_key,
length=16)
manager.add_smart_password(password)
# Retrieve later
stored_pass = manager.get_smart_password("[email protected]")
Method | Description | Recommended Use |
---|---|---|
generate_base_password() |
Simple random password | Temporary passwords |
generate_strong_password() |
Password with character requirements | User accounts |
generate_smart_password() |
Deterministic password from credentials | Main use case |
- Always keep your
secret
secure - it's required to regenerate passwords - The
public_key
can be safely stored for verification - Minimum recommended password length is 12 characters
from smartpasslib import SmartPasswordMaster
login = input("Enter your login: ")
secret = input("Enter your secret: ")
password = SmartPasswordMaster.generate_smart_password(login, secret, 14)
print(f"Your password: {password}")
from smartpasslib import SmartPasswordManager, SmartPassword, SmartPasswordMaster
manager = SmartPasswordManager()
# Add new account
new_account = SmartPassword(
login="[email protected]",
key=SmartPasswordMaster.generate_public_key("[email protected]", "workSecret123"),
length=18
)
manager.add_smart_password(new_account)
# Retrieve password later
account = manager.get_smart_password("[email protected]")
password = SmartPasswordMaster.generate_smart_password(
account.login,
"workSecret123",
account.length
)
- Major code refactoring
- Added new generation methods
- Marked some legacy methods as deprecated
- Improved type hints and documentation
β οΈ Note: Some deprecated methods will be removed in future versions
BSD 3-Clause License
Copyright Β© 2018-2025, A.A. Suvorov
All rights reserved.
python -m build
orpython setup.py sdist bdist_wheel
twine upload dist/*
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.