Security
如何驗證私鑰?
如果給定的字元串是有效的乙太私鑰,我找不到任何給定十六進制值返回 true 的庫。
有什麼提示嗎?
正如 Peter 所提到的,私鑰是一個隨機的 256 位 blob。沒有限制是一個常見的疏忽。
它必須對 secp256k1 曲線有效,這意味著兩個條件:
- 不能為零
- 必須小於曲線的階數(稱為
n
且值為ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141
)在 Javascript 中,您可以使用ethereumjs-wallet進行此驗證:
Wallet.fromPrivateKey(<yourkey>)
將在無效輸入上引發異常。或者,您也可以使用
privateKeyVerify()
底層庫中的方法,secp256k1
或者使用您選擇的大數字庫手動執行。