golang中crypto/elliptic包

栏目: Go · 发布时间: 5年前

内容简介:elliptic包实现了几条覆盖素数有限域的标准椭圆曲线。type CurveCurve代表一个短格式的Weierstrass椭圆曲线,其中a=-3。

elliptic包实现了几条覆盖素数有限域的标准椭圆曲线。

type Curve

type Curve interface {
    // Params返回椭圆曲线的参数
    Params() *CurveParams
    // IsOnCurve判断一个点是否在椭圆曲线上
    IsOnCurve(x, y *big.Int) bool
    // 返回点(x1,y1)和点(x2,y2)相加的结果
    Add(x1, y1, x2, y2 *big.Int) (x, y *big.Int)
    // 返回2*(x,y),即(x,y)+(x,y)
    Double(x1, y1 *big.Int) (x, y *big.Int)
    // k是一个大端在前格式的数字,返回k*(Bx,By)
    ScalarMult(x1, y1 *big.Int, k []byte) (x, y *big.Int)
    // k是一个大端在前格式的数字,返回k*G,G是本椭圆曲线的基点
    ScalarBaseMult(k []byte) (x, y *big.Int)
}

Curve代表一个短格式的Weierstrass椭圆曲线,其中a=-3。

Weierstrass椭圆曲线的格式:y 2 = x 3 + a*x + b

这个包实现的函数:

1)func P224() Curve

返回一个实现了P-224的曲线

2)func P256() Curve

返回一个实现了P-256的曲线

3)func P384() Curve

返回一个实现了P-284的曲线

4)func P521() Curve

返回一个实现了P-512的曲线

type CurveParams

type CurveParams struct {
    P       *big.Int // 决定有限域的p的值(必须是素数)
    N       *big.Int // 基点的阶(必须是素数)
    B       *big.Int // 曲线公式的常量(B!=2)
    Gx, Gy  *big.Int // 基点的坐标
    BitSize int      // 决定有限域的p的字位数
}

CurveParams包含一个椭圆曲线的所有参数,也可提供一般的、非常数时间实现的椭圆曲线。

这个类(结构体)实现的方法

func (curve *CurveParams) Params() *CurveParams
func (curve *CurveParams) IsOnCurve(x, y *big,Int) bool
func (curve *CurveParams) Add(x1, y1, x2, y2 *big.Int) (*big,Int, *big,Int)
func (curve *CurveParams) Double(x1, y1 *big.Int) (*big.Int, *big,Int)
func (curve *CurveParams) ScalarMult(Bx, By *big.Int, k []byte) (*big.Int, *big.Int)
func (curve *CurveParams) ScalarBaseMult(k []byte) (*big.Int, *big.Int)
func GenerateKey(curve Curve, rand io.Reader) (priv []byte, x, y *big.Int, err error)
GenerateKey返回一个公钥/私钥对。priv是私钥,而(x,y)是公钥。密钥对是通过提供的随机数读取器来生成的,该io.Reader接口必须返回随机数据
func Marshal(curve Curve, x, y *big.Int) []byte
Marshal将一个点编码为ANSI X9.62指定的格式。
func Unmarshal(curve Curve, data []byte) (x, y *big.Int)
将一个Marshal编码后的点还原;如果出错,x会被设为nil。

以上所述就是小编给大家介绍的《golang中crypto/elliptic包》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

失业的程序员

失业的程序员

沈逸 / 2014-5-1 / 39.00元

这是一个程序员从失业到自行创业的奋斗历程,虽然囧事连连、过程曲折,却充满了趣味。本书以作者的真实创业经历为主线,文字幽默诙谐,情节生动真实,包括了招聘、团队管理和用户公关,以及技术架构设计、核心代码编写、商务谈判、项目运作等场景经验。 从初期的创业伙伴、领路人,到商业竞争对手,各种复杂的关系在各个关键时刻却都发生了意想不到的逆转。在历经千辛万苦,眼看快要成功时,主人公却几乎再次失业。 ......一起来看看 《失业的程序员》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试