Go 语言

Go 语言教程 Go 语言环境安装 Go 语言结构 Go 语言基础语法 Go 语言数据类型 Go 语言变量 Go 语言常量 Go 语言运算符 Go 语言条件语句 Go 语言 if 语句 Go 语言 if...else 语句 Go 语言 if 语句嵌套 Go 语言 switch 语句 Go 语言 select 语句 Go 语言循环语句 Go 语言 for 循环 Go 语言循环嵌套 Go 语言 break 语句 Go 语言 continue 语句 Go 语言 goto 语句 Go 语言函数 Go 语言函数值传递值 Go 语言函数引用传递值 Go 语言函数作为值 Go 语言函数闭包 Go 语言函数方法 Go 语言变量作用域 Go 语言数组 Go 语言多维数组 Go 语言向函数传递数组 Go 语言指针 Go 语言指针数组 Go 语言指向指针的指针 Go 语言指针作为函数参数 Go 语言结构体 Go 语言切片(Slice) Go 语言范围(Range) Go 语言Map(集合) Go 语言递归函数 Go 语言类型转换 Go 语言接口 Go 错误处理 Go 语言开发工具Go 语言标准库

Go 语言标准库


package ecdsa

import "crypto/ecdsa"

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

Go语言标准库 >>


  • 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构成的签名,并返回签名是否合法。