ecdsa

优质
小牛编辑
140浏览
2023-12-01

import "crypto/ecdsa"

ecdsa包实现了椭圆曲线数字签名算法,参见FIPS 186-3。


  • type PublicKey
  • type PrivateKey
  • func Sign(rand io.Reader, priv *PrivateKey, hash []byte) (r, s *big.Int, err error)
  • func Verify(pub *PublicKey, hash []byte, r, s *big.Int) bool
  • type PublicKey

    type PublicKey struct {
        elliptic.Curve
        X, Y *big.Int
    }

    PrivateKey代表一个ECDSA公钥。

    type PrivateKey

    type PrivateKey struct {
        PublicKey
        D   *big.Int
    }

    PrivateKey代表一个ECDSA私钥。

    func GenerateKey

    GenerateKey函数生成一对

    func GenerateKey(c elliptic.Curve, rand io.Reader) (priv *PrivateKey, err error)

    公钥/私钥。

    func Sign

    func Sign(rand io.Reader, priv *PrivateKey, hash []byte) (r, s *big.Int, err error)

    使用私钥对任意长度的hash值(必须是较大信息的hash结果)进行签名,返回签名结果(一对大整数)。私钥的安全性取决于密码读取器的熵度(随机程度)。

    func Verify

    func Verify(pub *PublicKey, hash []byte, r, s *big.Int) bool

    使用公钥验证hash值和两个大整数r、s构成的签名,并返回签名是否合法。