Web3js

web3.eth.accounts.sign ‘K’ 代

  • April 20, 2022

我一直在尋找實際的實現,web3.eth.accounts.sign以了解隨機變數 k 是如何生成的。但我找不到該方法的實現web3.eth.accounts.sign。我是 JS 新手,請多多包涵 :D

任何的想法?

我不認為乙太坊消息簽名存在隨機變數,因為它必須是確定性的。

乙太坊消息私鑰簽名的實現範例,請參見 eth-lib 庫源碼

任何在 ECC 上有效的隨機私鑰(32 字節)(密鑰 < 曲線順序)都應該是​​有效的。但是,隨機密鑰必須 “加密隨機的”,程式語言的預設隨機生成器可能還不夠。

當 k 不夠隨機,或者值不是秘密時,可以使用兩個不同的簽名來計算私鑰(“故障攻擊”)

可以在此處找到用於簽名的虛擬碼。如果AWS KMS用於簽署交易,它使用非確定性簽名。

您還可以使簽名輸出具有確定性:

這些確定性簽名使用 RFC 6979 標準,該標準描述瞭如何根據私鑰和消息(或雜湊)為 k 生成安全值。

關於確定性/非確定性 ECDSA 的討論部落格。

引用自:https://ethereum.stackexchange.com/questions/102999