Ecdsa
OpenSSL 和 Secp256k1 在 ECDSA 簽名的實現上有何不同?
OpenSSL(來自
ssl
Mac OS X 版本 10.11.6)和 Secp256k1(來自比特幣核心儲存庫)似乎在 ECDSA 的實現上有所不同。我對這些差異有疑問,並想確保它們確實存在,如果存在,如何調和這些差異。例如,使用 OpenSSL,我得到的可恢復簽名可以以任何字節結尾。但是,從Secp256k1中的這一行來看,似乎
65
第th字節(即最後一個字節)需要介於0
和4
包含之間。如果是這種情況,那麼為什麼 OpenSSL 允許最後一個字節(似乎被稱為
rec_id
)具有任何值?
您在 libsecp256k1 中引用的程式碼不適用於 ECDSA。
它實現了比特幣核心用於消息簽名和驗證的自定義緊湊簽名。
libsecp256k1 中的普通 ECDSA 程式碼在接受方面應該與 OpenSSL 中的相同(除了預設情況下,它只接受並產生低 s 簽名,作為降低延展性潛力的一種方式)。