[英]Convert Bitcoin private key from file text - line by line
我開始學習 Python 以成功完成下面的項目,但我需要幫助。
我有一些舊錢包的比特幣/萊特幣私鑰。 我很確定這些地址是空的,但是在我刪除這個舊文件之前,我想將這些不同的私鑰轉換為公共地址以檢查是否全部為空。 我會使用在線服務一次檢查這些地址(有些允許控制多達 50 個地址)。
我知道,我可以將每個私鑰一一導入錢包中,但我的計算機上沒有更多的比特幣核心,我不想安裝一個新的只是為了檢查我的地址。
經過大量研究,我有這個功能代碼:
import ecdsa
import hashlib
import base58
with open("my_private_key.txt", "r") as f: #Input file path
data = f.readline()
for line in data:
#Convert hex private key to bytes
private_key = bytes.fromhex(data)
#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)
我有兩個問題:
我理解f.readline()
讀取文件,並且我認為for line in data:
會逐行讀取該文件以處理每一行。
我試圖移動我的變量data
的位置,但是這一次,只有我的第二個文本行正在處理。
with open("my_private_key.txt", "r") as f: #Input file path
for line in data:
data = f.readline()
.....
我做了很多測試,但我不知道出了什么問題。 我在哪里 go 錯了??
預先感謝您的幫助。
您在濫用 readline() 這只會返回一行。
但是,您可以僅使用 for 循環遍歷文件中的行,
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.