文章目录
- 前言
- 一、ECC是什么?
- 二、go语言实现
前言
提示:以下是本篇文章正文内容,下面案例可供参考
一、ECC是什么?
ECC全称为“Ellipse Curve Ctyptography”,是一种基于椭圆曲线数学的公开密钥加密算法。椭圆曲线在密码学中的使用是在1985年由Neal Koblitz和Victor Miller分别独立提出的。与传统的基于大质数分解难题的加密算法不同,该加密方式基于 “离散对数” 这种数学难题。该算法的主要优势是可以使用更小的密钥病提供相当高等级的安全。ECC164位的密钥产生一个安全级,相当于RSA 1024位密钥提供的保密强度,而且计算量较小,处理速度更快,存储空间和传输带宽占用较少。目前我国居民二代身份证正在使用 256 位的椭圆曲线密码,虚拟货币比特币也选择ECC作为加密算法。
二、go语言实现
package mainimport ("crypto/ecdsa""crypto/elliptic""crypto/rand""crypto/sha256""fmt"
)func main() {message := []byte("hello baby!")//参数一:曲线类型privateKey, _ := ecdsa.GenerateKey(elliptic.P521(), rand.Reader)//获取公钥pub := privateKey.PublicKey//散列明文digest := sha256.Sum256(message)r, s, _ := ecdsa.Sign(rand.Reader, privateKey, digest[:])message1 := []byte("hello baby!")digest = sha256.Sum256(message1)flag := ecdsa.Verify(&pub, digest[:], r, s)if flag {fmt.Println("OK")} else {fmt.Println("Failed")}}