Skip to content

smartlegionlab/smartpasslib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Smart Passwords Library (smartpasslib) v0.7.1

GitHub release (latest by date) GitHub top language PyPI GitHub PyPI - Format

PyPI Downloads PyPI Downloads PyPI Downloads

A cross-platform Python library for generating deterministic, secure passwords that never need to be stored.

πŸ”₯ Key Features

  • πŸš€ 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

🀝 Supported:

  • Linux: All.
  • Windows: 7/8/10/11?.
  • Termux (Android).

πŸ“¦ Installation

pip install smartpasslib

πŸš€ Quick Start

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

βš™οΈ Core Components

1. SmartPasswordMaster

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)

2. SmartPasswordManager

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]")

πŸ”§ Advanced Usage

Password Generation Options

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

Security Notes

  • 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

πŸ“š Examples

CLI Password Generator

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}")

Password Manager Integration

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
)

πŸ“ Changelog

v0.7.1

  • 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

πŸ“œ License

BSD 3-Clause License

Copyright Β© 2018-2025, A.A. Suvorov  
All rights reserved.

Related Projects

πŸ’» Information for developers:

  • python -m build or python 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.