Golang语言情怀-第59期 Go 语言标准库翻译 crypto/ecdsa

2021-03-09 11:03:27 浏览数 (1)

import "crypto/ecdsa"

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

代码语言:javascript复制
type PublicKey
type PrivateKey
func GenerateKey(c elliptic.Curve, rand io.Reader) (priv *PrivateKey, err error)
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

代码语言:javascript复制
type PublicKey struct {
    elliptic.Curve
    X, Y *big.Int
}

PrivateKey代表一个ECDSA公钥。

type PrivateKey

代码语言:javascript复制
type PrivateKey struct {
    PublicKey
    D   *big.Int
}

PrivateKey代表一个ECDSA私钥。

func GenerateKey

GenerateKey函数生成一对

代码语言:javascript复制
func GenerateKey(c elliptic.Curve, rand io.Reader) (priv *PrivateKey, err error)

公钥/私钥。

func Sign

代码语言:javascript复制
func Sign(rand io.Reader, priv *PrivateKey, hash []byte) (r, s *big.Int, err error)

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

func Verify

代码语言:javascript复制
func Verify(pub *PublicKey, hash []byte, r, s *big.Int) bool

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


参考资料:

Go语言中文文档

http://www.golang.ltd/

Go语言官方文档

https://golang.google.cn/

0 人点赞