mirror of
https://github.com/PR0M3TH3AN/SeedPass.git
synced 2025-09-08 23:38:49 +00:00
47 lines
1.4 KiB
Python
47 lines
1.4 KiB
Python
# utils/fingerprint.py
|
|
|
|
"""
|
|
Fingerprint Module
|
|
|
|
This module provides functionality to generate a unique, one-way hashed fingerprint
|
|
from a given seed phrase. The fingerprint serves as an identifier for each seed,
|
|
facilitating organized and secure storage.
|
|
"""
|
|
|
|
import hashlib
|
|
import logging
|
|
from typing import Optional
|
|
|
|
# Instantiate the logger
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def generate_fingerprint(seed_phrase: str, length: int = 16) -> Optional[str]:
|
|
"""
|
|
Generates a unique fingerprint from the provided seed phrase using SHA-256.
|
|
|
|
Parameters:
|
|
seed_phrase (str): The BIP-39 seed phrase.
|
|
length (int): The desired length of the fingerprint.
|
|
|
|
Returns:
|
|
Optional[str]: The generated fingerprint or None if an error occurs.
|
|
"""
|
|
try:
|
|
# Normalize the seed phrase
|
|
normalized_seed = seed_phrase.strip().lower()
|
|
logger.debug(f"Normalized seed: {normalized_seed}")
|
|
|
|
# Compute SHA-256 hash
|
|
sha256_hash = hashlib.sha256(normalized_seed.encode("utf-8")).hexdigest()
|
|
logger.debug(f"SHA-256 Hash: {sha256_hash}")
|
|
|
|
# Truncate to desired length
|
|
fingerprint = sha256_hash[:length].upper()
|
|
logger.debug(f"Generated Fingerprint: {fingerprint}")
|
|
|
|
return fingerprint
|
|
except Exception as e:
|
|
logger.error(f"Failed to generate fingerprint: {e}", exc_info=True)
|
|
return None
|