簡體   English   中英

從文件文本轉換比特幣私鑰

[英]Convert Bitcoin private key from file text

朋友們下午好,我剛開始學習python,我找到了適合我需要的代碼,但是在輸出的路上所有東西都在一行中同步,幫助我解決這個問題。

import ecdsa
import hashlib
import base58


with open("my_private_key.txt", "r") as f:    #Input file path
  for line in f:

              #Convert hex private key to bytes
     private_key = bytes.fromhex(line)      

              #Derivation of the private key
     signing_key = ecdsa.SigningKey.from_string(private_key, curve=ecdsa.SECP256k1)
     verifying_key = signing_key.get_verifying_key()

     public_key = bytes.fromhex("04") + verifying_key.to_string()

             #Hashes of public key
     sha256_1 = hashlib.sha256(public_key)
     ripemd160 = hashlib.new("ripemd160")
     ripemd160.update(sha256_1.digest())

             #Adding prefix to identify Network
     hashed_public_key = bytes.fromhex("00") + ripemd160.digest()

             #Checksum calculation
     checksum_full = hashlib.sha256(hashlib.sha256(hashed_public_key).digest()).digest()
     checksum = checksum_full[:4]

             #Adding checksum to hashpubkey         
     bin_addr = hashed_public_key + checksum

             #Encoding to address
     address = str(base58.b58encode(bin_addr))
     final_address = address[2:-1]

     print(final_address)

     with open("my_addresses.txt", "a") as i:
        i.write(final_address)

print在寫完所有 arguments 后寫一個尾隨換行符。 write不會; 你必須自己提供。

with open("my_addresses.txt", "a") as i:
    i.write(final_address + "\n")

或者,您可以使用print

with open("my_addresses.txt", "a") as i:
    print(final_address, file=i)

忽略它的許多關鍵字 arguments, print的定義類似於

def print(*args, end='\n', sep=' ', file=sys.stdout):
    file.write(sep.join(args))
    file.write(end)
    

另請注意,您無需重復打開 output 文件。 您可以在輸入的同時打開它,並在循環期間保持打開狀態。

with open("my_private_key.txt", "r") as f, \
     open("my_addresses.txt", "a") as i:
    for line in f:
        ...
        print(final_address, file=i)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM