|
Title: Bitcoin Message Tool – semnare și verificare în mod comandă Post by: GazetaBitcoin on September 07, 2024, 10:52:59 AM Autor: witcher_sense (https://bitcointalk.org/index.php?action=profile;u=1433865)
Topic original: Bitcoin Message Tool - command-line signer & verifier (https://bitcointalk.org/index.php?topic=5437423) Introducere O unleată CLI (n.b.: Command Line Interface) ușoară și cu cod sursă complet deschis, menită să semneze și verifice mesaje Bitcoin. Mesajele Bitcoin sunt calea cea mai directă și naturală pentru a dovedi posesia unei anumite adrese, fără a dezvălui informații confidențiale. Această unealtă urmărește îndeaproape specificațiile descrise în BIP137: "... Era de la sine înțeles în timpul în care nu fusese scris niciun BIP pentru semnarea digitală a mesajelor cu chei private Bitcoin având adrese P2PKH; totuși, după introducerea adreselor SegWit (în ambele forme P2SH și bech32), nu este clar cum se pot distinge între ele adresele P2PKH, P2SH sau bech32. Acest BIP propune un format standard de semnătură care va permite clienților să poate distinge formatele diferite ale adreselor." De reținut: "întrucât acest format include chei P2PKH, este compatibil cu versiunile anterioare, dar țineți minte ca unele software verifică antetele și vor raporta noile antete SegWit ca fiind erori." Mai multe informații: https://github.com/bitcoin/bips/blob/master/bip-0137.mediawiki Portofele care suportă complet tipul de semnătură BIP137: 1) Trezor 2) Sparrow Wallet 3) Coldcard? 4) ... Această unealtă este, în principiu, o încercare de a extinde modul de utilizare al acestui standard. Instalare 1)Pentru instalearea cu ajutorul pip, rulăm: Code: pip install bitcoin-message-tool Puteți crea un mediu virtual pentru această aplicație, apoi o puteți rula de acolo, de pildă, folosind Poetry. Creați un director nou (bmt este prescurtarea pentru Bitcoin Message Tool sau puteți folosi ce nume doriți): Code: poetry new bmt Code: cd ./bmt Creați un nou mediu virtual: Code: poetry install Code: poetry shell Descărcați aplicația de pe PyPi cu ajutorul comenzii: Code: poetry add bitcoin-message-tool Pentru a o rula din terminal folosiți această comandă: Code: python3 -m bitcoin_message_tool Când rulați aplicația fără argumente, veți vedea un mesaj de ajutor. 2) Alternativ, puteți descărca codul sursă direct de pe GitHub cu ajutorul acestei comenzi: Code: git clone https://github.com/shadowy-pycoder/bitcoin_message_tool.git sau puteți bifurca pachetul și apoi puteți clona varianta bifurcată Instalați cele necesare cu ajutorul acestei comenzi: Code: pip install -r /path/to/requirements.txt Pentru a rula o aplicație din pachetul bifurcat sau clonat, puteți folosi comanda următoare: Code: python3 /path/to/bmt.py -h Cum se folosește Bitcoin Message Tool Următorul modul doctest ar trebui să ofere o imagine clară asupra modului de semnare și verificare a mesajelor prin intermediul acestei unelte CLI: Utilizare simplă: Code: python -m bitcoin_message_tool -h sau python bmt.py -h utilizare: python3 bmt.py [-h] {sign,verify} ... unealtă de semnare / verificare a mesajelor Bitcoin argumente poziționale: {sign,verify} opțiuni: -h, --help show this help message and exit Semnarea mesajelor: Code: python bmt.py sign -h utilizare: python3 bmt.py sign [-h] -p -a {p2pkh,p2wpkh-p2sh,p2wpkh} -m [MESSAGE ...] [-d] [-v] opțiuni: -h, --help afișează acest mesaj de ajutor și închide Semnarea mesajelor: -p, --privkey private key in wallet import format (WIF) -a {p2pkh,p2wpkh-p2sh,p2wpkh}, --addr_type {p2pkh,p2wpkh-p2sh,p2wpkh} Tipul de adresă Bitcoin -m [MESSAGE ...], --message [MESSAGE ...] Tipul de mesaj care va fi semnat -d, --deterministic semnare în mod determinist (RFC6979) -v, --verbose tipărire estetică a mesajelor Exemplu: semnătura non-deterministă pentru cheie privată comprimată și pentru adresă p2pkh Code: $python bmt.py sign -p -a p2pkh -m ECDSA ([i]n.b.: algoritm de criptare[/i]) este cel mai atractiv pe care l-am încercat De reținut, cheia privată nu va fi afișată pe terminal.PrivateKey(WIF): <scrie aici cheia privată> Se va afișa: Code: Bitcoin address: 175A5YsPUdM71mnNCC3i8faxxYJgBonjWL Messaj: ECDSA este cel mai atractiv pe care l-am încercat Semnătură: IBuc5GXSJCr6m7KevsBAoCiX8ToOjW2CDZMr6PCEbiHwQJ237LZTj/REbDHI1/yelY6uBWEWXiOWoGnajlgvO/A= Afișarea aceluiași mesaj cu ajutorul argumentului -v/--verbose: Code: -----BEGIN BITCOIN SIGNED MESSAGE----- ECDSA este cel mai atractiv pe care l-am încercat -----BEGIN BITCOIN SIGNATURE----- 175A5YsPUdM71mnNCC3i8faxxYJgBonjWL IBuc5GXSJCr6m7KevsBAoCiX8ToOjW2CDZMr6PCEbiHwQJ237LZTj/REbDHI1/yelY6uBWEWXiOWoGnajlgvO/A= -----END BITCOIN SIGNATURE----- Verificarea mesajelor: Code: python bmt.py verify -h utilizare: python3 bmt.py verify [-h] -a ADDRESS -m [MESSAGE ...] -s SIGNATURE [-v] [-r] opțiuni: -h, --help afișează acest mesaj de ajutor și închidet Verificarea messajelor: -a ADDRESS, --address ADDRESS Specifică adresa Bitcoin -m [MESSAGE ...], --message [MESSAGE ...] Mesajul care va fi verificat -s SIGNATURE, --signature SIGNATURE Semnătură Bitcoin în baza 64 -v, --verbose Tipărirea completă a mesajului -r, --recpub recuperează cheia publică Exemplu: verificarea mesajului în mod verbose Code: python bmt.py verify -a 175A5YsPUdM71mnNCC3i8faxxYJgBonjWL \ > -m ECDSA este cel mai atractiv pe care l-am încercat \ > -s HyiLDcQQ1p2bKmyqM0e5oIBQtKSZds4kJQ+VbZWpr0kYA6Qkam2MlUeTr+lm1teUGHuLapfa43JjyrRqdSA0pxs= \ > -v Se va afișa: Code: True Message verified to be from 175A5YsPUdM71mnNCC3i8faxxYJgBonjWL Mai multe exemple și coduri sursă pot fi găsite aici: https://github.com/shadowy-pycoder/bitcoin_message_tool Teste cu portofelul with Sparrow Wallet Să verificăm o semnătură SegWit prin crearea unui portofel real: https://i.ibb.co/hHxnG0V/IMG-20230131-081915-189.png Rezultat: https://i.ibb.co/MC5knZ3/Screenshot-2023-01-31-08-28-49-549-edit-com-termux.jpg Să verificăm o semnătură creată cu această unealtă: https://i.ibb.co/D1CKJ5G/Screenshot-2023-01-31-08-43-47-964-edit-com-termux.jpg Rezultat: https://i.ibb.co/t2syZsH/IMG-20230131-084712-671.png Traducere realizată la inițiativa: https://raw.githubusercontent.com/AOBTranslators/Images/main/AOBT%20Logo.png (https://bitcointalk.org/index.php?topic=5442314.0) |