Ecdsa

OpenSSL 和 Secp256k1 在 ECDSA 簽名的實現上有何不同?

  • November 21, 2016

OpenSSL(來自sslMac OS X 版本 10.11.6)和 Secp256k1(來自比特幣核心儲存庫)似乎在 ECDSA 的實現上有所不同。我對這些差異有疑問,並想確保它們確實存在,如果存在,如何調和這些差異。

例如,使用 OpenSSL,我得到的可恢復簽名可以以任何字節結尾。但是,從Secp256k1中的這一行來看,似乎65第th字節(即最後一個字節)需要介於04包含之間。

如果是這種情況,那麼為什麼 OpenSSL 允許最後一個字節(似乎被稱為rec_id)具有任何值?

您在 libsecp256k1 中引用的程式碼不適用於 ECDSA。

它實現了比特幣核心用於消息簽名和驗證的自定義緊湊簽名。

libsecp256k1 中的普通 ECDSA 程式碼在接受方面應該與 OpenSSL 中的相同(除了預設情況下,它只接受並產生低 s 簽名,作為降低延展性潛力的一種方式)。

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