首頁 / 區塊鏈 / 如何生成自己的比特幣私鑰?

如何生成自己的比特幣私鑰?

在加密貨幣中,私鑰允許用戶訪問其錢包。持有私鑰的人完全控制該錢包中的硬幣。出于這個原因,你應該保守秘密。如果您真的想自己生成密鑰,那么以安全的方式生成密鑰是有意義的。

在這里,我將介紹私鑰,并向您展示如何使用各種加密函數生成自己的密鑰。我將在Python中提供算法和代碼的描述。

需要生成私鑰嗎?

大多數時候不用。例如,如果您使用Coinbase或Blockchain.info等網絡錢包,他們會為您創建和管理私鑰。交易所也是如此。

移動和桌面錢包通常也會為您生成私鑰,但他們可以選擇使用您自己的私鑰創建錢包。

那么為什么要生成呢?以下是我的原因:

  • 你想確保沒有人知道密鑰
  • 您只想了解有關加密和隨機數生成(RNG)的更多信息

什么是私鑰?

形式上,比特幣(以及許多其他加密貨幣)的私鑰是一系列32字節?,F在,有很多方法可以記錄這些字節。它可以是256個零和0(32 * 8 = 256)或100個骰子的字符串。它可以是二進制字符串,Base64字符串,WIF密鑰,助記符短語,或最后是十六進制字符串。出于我們的目的,我們將使用64個字符長的十六進制字符串。

為什么正好是32字節?好問題!您可以看到,要從私有密鑰創建公鑰,比特幣使用ECDSA或橢圓曲線數字簽名算法。更具體地說,它使用一個稱為secp256k1的特定曲線。

現在,該曲線具有256位的量級,以256位作為輸入,并輸出256位整數。256位正好是32個字節。因此,換句話說,我們需要32字節的數據來提供給這種曲線算法。

私鑰還有一個額外的要求。因為我們使用ECDSA,所以關鍵應該是正數,并且應該小于曲線的順序。secp256k1的順序FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141非常大:幾乎任何32字節的數字都會比它小。

那么,我們如何生成一個32字節的整數?首先想到的是只使用您選擇的語言的RNG庫。Python甚至提供了一種生成足夠位的方式:

import random
bits = random.getrandbits(256)
# 30848827712021293731208415302456569301499384654877289245795786476741155372082
bits_hex = hex(bits)
# 0x4433d156e8c53bf5b50af07aa95a29436f29a94e0ccc5d58df8e57bdc8583c32
private_key = bits_hex[2:]
# 4433d156e8c53bf5b50af07aa95a29436f29a94e0ccc5d58df8e57bdc8583c32

看起來很好,但實際上,它不是。您看,普通的RNG庫不適用于加密,因為它們不是很安全。它們根據種子生成數字,默認情況下,種子是當前時間。這樣,如果你大致知道我上面生成的那些位,你需要做的就是暴力破解一些變種。

生成私鑰時,您希望非常安全。請記住,如果有人學習私鑰,他們可以輕松地從相應的錢包中竊取所有硬幣,而你沒有機會將其取回。

所以讓我們嘗試更安全地做到這一點。

密碼學上強大的RNG

除了標準的RNG方法,編程語言通常還提供專門用于加密操作的RNG。這種方法通常更加安全,因為它直接從操作系統中提取熵。這種RNG的結果很難再現。你不能通過知道生成時間或種子來做到這一點,因為沒有種子。好吧,至少用戶不輸入種子 – 相反,它是由程序創建的。

在Python中,secrets模塊中實現了加密強RNG 。讓我們修改上面的代碼,使私鑰生成安全!

import secrets
bits = secrets.randbits(256)
# 46518555179467323509970270980993648640987722172281263586388328188640792550961
bits_hex = hex(bits)
# 0x66d891b5ed7f51e5044be6a7ebe4e2eae32b960f5aa0883f7cc0ce4fd6921e31
private_key = bits_hex[2:]
# 66d891b5ed7f51e5044be6a7ebe4e2eae32b960f5aa0883f7cc0ce4fd6921e31

這是驚人的。我敢打賭,即使訪問我的電腦,你也無法重現這一點。但我們可以更深入了嗎?

專業網站

有些網站會為您生成隨機數。我們在這里只考慮兩個。一個是random.org,一個眾所周知的通用隨機數發生器。另一個是bitaddress.org,專門用于比特幣私鑰生成。

random.org可以幫助我們生成密鑰嗎?當然,因為他們有生成隨機字節的服務。但是這里出現了兩個問題。Random.org聲稱是一個真正的隨機發生器,但你能相信嗎?你能確定它確實是隨機的嗎?你能確定所有者不記錄所有代的結果,特別是那些看起來像私鑰的結果嗎?答案取決于你。哦,你不能在本地運行它,這是一個額外的問題。此方法不是100%安全。

現在,bitaddress.org是一個完全不同的故事。它是開源的,所以你可以看到它的內幕。它是客戶端,因此即使沒有Internet連接,您也可以下載并在本地運行它。

點擊鏈接注冊數字貨幣賬戶開啟您的數字貨幣之旅
本文來自網絡,不代表小白財經立場,轉載請注明出處:http://www.hczyw.cn/p17126.html
數字貨幣
上一篇
下一篇

為您推薦

發表評論

您的電子郵箱地址不會被公開。 必填項已用*標注

返回頂部
九九久久倩色有声小说_九九无码专区国产精品_九九亚洲精品自拍色