Security

如何驗證私鑰?

  • March 12, 2020

如果給定的字元串是有效的乙太私鑰,我找不到任何給定十六進制值返回 true 的庫。

有什麼提示嗎?

正如 Peter 所提到的,私鑰是一個隨機的 256 位 blob。沒有限制是一個常見的疏忽。

它必須對 secp256k1 曲線有效,這意味著兩個條件:

  • 不能為零
  • 必須小於曲線的階數(稱為n且值為ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141

在 Javascript 中,您可以使用ethereumjs-wallet進行此驗證:Wallet.fromPrivateKey(<yourkey>)將在無效輸入上引發異常。

或者,您也可以使用privateKeyVerify()底層庫中的方法,secp256k1或者使用您選擇的大數字庫手動執行。

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