ECC签名算法


前言

提示:以下是本篇文章正文内容,下面案例可供参考

一、ECC是什么?

ECC全称为“Ellipse Curve Ctyptography”,是一种基于椭圆曲线数学的公开密钥加密算法。椭圆曲线在密码学中的使用是在1985年由Neal Koblitz和Victor Miller分别独立提出的。与传统的基于大质数分解难题的加密算法不同,该加密方式基于 “离散对数” 这种数学难题。该算法的主要优势是可以使用更小的密钥病提供相当高等级的安全。ECC164位的密钥产生一个安全级,相当于RSA 1024位密钥提供的保密强度,而且计算量较小,处理速度更快,存储空间和传输带宽占用较少。目前我国居民二代身份证正在使用 256 位的椭圆曲线密码,虚拟货币比特币也选择ECC作为加密算法。

二、go语言实现

package main

import (
	"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")
	}

}













































猜你喜欢

转载自blog.csdn.net/weixin_44763160/article/details/120103867
今日推荐