Golang 椭圆加密算法实现

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

内容简介:椭圆曲线密码学(英语:Elliptic Curve Cryptography,缩写:ECC)是一种基于椭圆曲线数学的公开密钥加密算法。椭圆曲线在密码学中的使用是在1985年由Neal Koblitz和Victor Miller分别独立提出的。ECC的主要优势是在某些情况下它比其他的算法(比如RSA加密算法)使用更小的密钥并提供相当的或更高等级的安全。ECC的另一个优势是可以定义群之间的双线性映射,基于Weil对或是Tate对;双线性映射已经在密码学中发现了大量的应用,例如基于身份的加密。不过一个缺点是加密和

什么是椭圆加密算法

椭圆曲线密码学(英语:Elliptic Curve Cryptography,缩写:ECC)是一种基于椭圆曲线数学的公开密钥加密算法。椭圆曲线在密码学中的使用是在1985年由Neal Koblitz和Victor Miller分别独立提出的。

ECC的主要优势是在某些情况下它比其他的算法(比如RSA加密算法)使用更小的密钥并提供相当的或更高等级的安全。ECC的另一个优势是可以定义群之间的双线性映射,基于Weil对或是Tate对;双线性映射已经在密码学中发现了大量的应用,例如基于身份的加密。

不过一个缺点是加密和解密操作的实现比其他机制花费的时间长。

代码实现

var Aprivate, Apublic [32]byte
    //产生随机数
    if _, err := io.ReadFull(rand.Reader, Aprivate[:]); err != nil {
        os.Exit(0)
    }
    curve25519.ScalarBaseMult(&Apublic, &Aprivate)
    fmt.Println("A私钥", base64.StdEncoding.EncodeToString(Aprivate[:]))
    fmt.Println("A公钥", base64.StdEncoding.EncodeToString(Apublic[:])) //作为椭圆起点

    var Bprivate, Bpublic [32]byte
    //产生随机数
    if _, err := io.ReadFull(rand.Reader, Bprivate[:]); err != nil {
        os.Exit(0)
    }
    curve25519.ScalarBaseMult(&Bpublic, &Bprivate)
    fmt.Println("B私钥",  base64.StdEncoding.EncodeToString(Bprivate[:]))
    fmt.Println("B公钥",  base64.StdEncoding.EncodeToString(Bpublic[:])) //作为椭圆起点

    var Akey, Bkey [32]byte

    //A的私钥加上B的公钥计算A的key
    curve25519.ScalarMult(&Akey, &Aprivate, &Bpublic)

    //B的私钥加上A的公钥计算B的key
    curve25519.ScalarMult(&Bkey, &Bprivate, &Apublic)

    fmt.Println("A交互的KEY",  base64.StdEncoding.EncodeToString(Akey[:]))
    fmt.Println("B交互的KEY",  base64.StdEncoding.EncodeToString(Bkey[:]))

输出值

A私钥 7i3ADsF/e47UHxdZW1dP5R+OO4wZjK8lHIvW0Y65CZY=
A公钥 DTyAub5yB+ZpPJl0D6jcL7RPu0elDBcWxlBkP9DaCFY=
B私钥 dnkaHZ8BouXCuZTcjDwAmrsZhGd8WMrLhsYsisdd1dQ=
B公钥 ob63R56KbVqQghFDfB6qMX0/8kKYy4ZkIKacAaedw3o=
A交互的KEY yn6TpBZprWR+pr++lFJFOEawNJ/gp2grLvYLBS8pjDY=
B交互的KEY yn6TpBZprWR+pr++lFJFOEawNJ/gp2grLvYLBS8pjDY=

完整演示代码 点击这里

联系 QQ: 3355168235


以上所述就是小编给大家介绍的《Golang 椭圆加密算法实现》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

编写高质量代码:改善Python程序的91个建议

编写高质量代码:改善Python程序的91个建议

张颖、赖勇浩 / 机械工业出版社 / 2014-6 / 59.00元

在通往“Python技术殿堂”的路上,本书将为你编写健壮、优雅、高质量的Python代码提供切实帮助!内容全部由Python编码的最佳实践组成,从基本原则、惯用法、语法、库、设计模式、内部机制、开发工具和性能优化8个方面深入探讨了编写高质量Python代码的技巧与禁忌,一共总结出91条宝贵的建议。每条建议对应Python程序员可能会遇到的一个问题。本书不仅以建议的方式从正反两方面给出了被实践证明为......一起来看看 《编写高质量代码:改善Python程序的91个建议》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具