Private-Key
如何導入 64 字節長的私鑰
根據比特幣維基: https ://en.bitcoin.it/wiki/Private_key,私鑰長度為 256 位(32 字節)
澳大利亞初創公司 Diamond Circle 向我發送了一對比特幣地址及其私鑰。Blockchain.info 顯示錢仍在給定地址中。
問題是私鑰是64 字節長。它是 base-64 編碼的,尾隨 ==
由於它不在 WIF 中,我想知道如何導入它。有人見過 64 位私鑰嗎?
考慮到 64 字節的密鑰可能是 bip32 格式的種子密鑰,您可能需要先派生密鑰。我修改了程式碼以反映這一點
npm install coinstring hdkey node var HDKey = require('hdkey') var cs = require('coinstring') // This is your base64 key var seed = 'oMQqnDrGq/K6aplGroOvGPUb8cn6fazEySUTzE3QFYNDQcd13NTA+sc1R8VmLYGp6TYaCqxgSnOjIb2RA7zorw==' var hdkey = HDKey.fromMasterSeed(new Buffer(seed, 'base64')) var hex = hdkey.privateKey var version = 0x80; //Bitcoin private key console.log(cs.encode(hex, version))
它應該為您提供熟悉的 WIF 格式私鑰。
5HyfJgfUm7WVgUrLuo9uwtJR6ME7MYfGRhK2aeckZRooSKYGXP8
以下python程式碼應該可以工作。將私鑰轉換為 HEX,並使用它:
import binascii, hashlib def privateKey_to_WIF(pk): #wallet import format ==> pra importar nas carteiras privWIF1 = hashlib.sha256(binascii.unhexlify('80'+pk)).hexdigest() privWIF2 = hashlib.sha256(binascii.unhexlify(privWIF1)).hexdigest() privWIF3 = '80'+pk+privWIF2[:8] pubnum = int(privWIF3,16) pubnumlist = [] while pubnum!=0: pubnumlist.append(pubnum%58); pubnum/=58 WIF = '' for l in ['123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'[x] for x in pubnumlist]: WIF=l+WIF #print WIF return WIF
它將返回可在另一個客戶端中使用的錢包導入格式。
例子:
私鑰 WIF:5KNjwhPMnXbFS7bVeHEzpE4He6jkQeRF9wtBtr1p1anH25rDnys