前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Golang语言情怀-第59期 Go 语言标准库翻译 crypto/ecdsa

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

作者头像
李海彬
发布2021-03-09 11:03:27
4540
发布2021-03-09 11:03:27
举报
文章被收录于专栏:Golang语言社区

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/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言情怀 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • type PublicKey
  • type PrivateKey
    • func GenerateKey
    • func Sign
    • func Verify
    相关产品与服务
    全站加速网络
    全站加速网络(Enterprise Content Delivery Network,以下简称 ECDN)为您提供稳定高效的网络加速服务,适用于动静混合、纯动态、跨国、上传等多种加速场景。ECDN 网络资源丰富,同时融合静态缓存、智能路由、协议优化、多路传输、抗抖动等自研技术,加速效果更加显著;接入便捷,功能配置灵活多样,可满足您个性化的业务需求。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档