Client

在 Bitcoin Core 0.13.1 (OSX) 中籤名並驗證消息?

  • November 12, 2016

作為對這裡的跟進:

使用 OpenSSL 在 Unix cmd 行上驗證比特幣 trx?

和這裡:

ECDSA 驗證算法在交易過程中如何工作?

我使用比薩餅 trx,並在命令行(使用 openssl)進行驗證,這會產生預期的結果。當我想簽入圖形 BITCOIN QT 0.13.1 客戶端時,s.th。失敗。到目前為止我做了什麼:

我在文件中有這些值:

pizza.sighex
30450221009908144ca6539e09512b9295c8a27050d478fbb96f8addbc3d075544dc41328702201aa528be2b907d316d2da068dd9eb1e23243d97e444d59290d2fddf25269ee0e

pizza.keyhex
3056301006072a8648ce3d020106052b8104000a034200
042e930f39ba62c6534ee98ed20ca98959d34aa9e057cda01cfd422c6bab3667b76426529382c23f42b9b08d7832d4fee1d6b437a8526e59667ce9c4e9dcebcabb

pizza.hash2
c2d48f45d7fbeff644ddb72b0f60df6c275f0943444d7df8cc851b3d55782669

(注意:在原始網頁中,雙重雜湊是由 amaclin 以相反的順序給出的!)

$ xxd -r -p <pizza.sighex >pizza.sigraw
$ xxd -r -p <pizza.keyhex | openssl pkey -pubin -inform der >pizza.keypem
$ xxd -r -p <pizza.hashhex >pizza.hash2
$ openssl pkeyutl <pizza.hash2 -verify -pubin -inkey pizza.keypem -sigfile pizza.sigraw

–> 簽名驗證成功

現在嘗試在比特幣核心中,未壓縮的公鑰雜湊到這個比特幣地址:

17SkEw2md5avVNyYgj6RiXuQKNwkXaxFyQ

簽名為 base64 編碼字元串:

$ echo 30450221009908144ca6539e09512b9295c8a27050d478fbb96f8addbc3d075544dc41328702201aa528be2b907d316d2da068dd9eb1e23243d97e444d59290d2fddf25269ee0e | base64 -

MzA0NTAyMjEwMDk5MDgxNDRjYTY1MzllMDk1MTJiOTI5NWM4YTI3MDUwZDQ3OGZiYjk2ZjhhZGRiYzNkMDc1NTQ0ZGM0MTMyODcwMjIwMWFhNTI4YmUyYjkwN2QzMTZkMmRhMDY4ZGQ5ZWIxZTIzMjQzZDk3ZTQ0NGQ1OTI5MGQyZmRkZjI1MjY5ZWUwZQo =

進入QT客戶端,老是提示“消息驗證失敗”。所以我從頭開始嘗試,我轉到“簽名消息”選項卡,然後輸入:pubkey hash:

1DHG9SbeW3SXNpvbRUG3txXm1yDZTPKY9X

雜湊值:

56cc00a443f7b457ac3ec4bf1cc10ab3fa0c97fb173c27465b35766d313cd18c

並點擊“簽名”,以接收 base64 (?) 編碼字元串:

IKWqGIVDCcpTBgFNushFeOlDj/08B4LEzYl4LDrWLLKnPQrqaSjjFYrdeWGXH9eIgHw7F7bkRtPpwC6jOur+R8k=

現在我應該能夠在驗證選項卡中輸入這三個值,所以我將它們剪切並粘貼到欄位中,它們也失敗了。我找不到任何有關如何使用 Bitcoin Core 13.1 客戶端的相關資訊。我正在尋找一些描述或參考,以解釋基本邏輯。任何幫助表示讚賞:-)

Bitcoin Core 中的消息簽名功能使用不同的額外緊湊格式來編碼簽名。該算法還故意與交易中使用的算法不兼容(通過額外的雜湊步驟),以避免人們被欺騙簽署交易。

引用自:https://bitcoin.stackexchange.com/questions/49600