Untitled
import os import hashlib import base58 from ecdsa import SECP256k1, SigningKey # Fonction pour générer une clé Litecoin privée et son adresse def generate_litecoin_key(): # Générer une clé privée aléatoire (32 octets) private_key = os.urandom(32) # Créer une clé publique à partir de la clé privée sk = SigningKey.from_string(private_key, curve=SECP256k1) public_key = sk.get_verifying_key().to_string() # Calculer l'adresse Litecoin (en utilisant le même processus que Bitcoin) sha256_pubkey = hashlib.sha256(public_key).digest() ripemd160_pubkey = hashlib.new('ripemd160', sha256_pubkey).digest() # Ajouter le préfixe Litecoin (0x30 pour Litecoin mainnet) versioned_payload = b'\x30' + ripemd160_pubkey # Calculer le checksum (les 4 premiers octets de SHA256(SHA256(versioned_payload))) checksum = hashlib.sha256(hashlib.sha256(versioned_payload).digest()).digest()[:4] # Générer l'adresse finale Litecoin address = base58.b58encode(versioned_payload + checksum).decode('utf-8') # Retourner la clé privée et l'adresse dans le format requis private_key_hex = private_key.hex() return private_key_hex, address # Fonction principale pour générer les clés def main(): # Demander combien de clés privées générer num_keys = int(input("Combien de clés privées voulez-vous générer ? ")) # Ouvrir le fichier pour y enregistrer les clés with open("case.txt", "w") as file: for _ in range(num_keys): private_key, address = generate_litecoin_key() # Écrire la clé privée et l'adresse dans le fichier file.write(f"Clé : {private_key} | Adresse : {address}\n") print(f"{num_keys} clés et adresses Litecoin ont été générées et enregistrées dans 'case.txt'.") if __name__ == "__main__": main()
Leave a Comment