DSA
DSA 是专业用于数字签名和验签,并且只有这个作用, 不能用于加密和解密。
在安全性上,DSA和RSA差不多,但是速度比RSA快很多。
DSA签名和验签
func main() {
//设置私钥使用的参数
var param dsa.Parameters
dsa.GenerateParameters(¶m, rand.Reader, dsa.L1024N160)
//创建私钥
var pri dsa.PrivateKey
pri.Parameters = param
dsa.GenerateKey(&pri, rand.Reader)
//生成公钥
pub := pri.PublicKey
//签名
message := []byte("hello")
r,s,_ := dsa.Sign(rand.Reader, &pri, message)
//验证
if dsa.Verify(&pub, message, r, s){
fmt.Println("验签成功")
}
}
ECC
椭圆曲线加密算法,即:Elliptic Curve Cryptography,简称ECC,是基于椭圆曲线数学理论实现的一种非对称加密算法。相比RSA,ECC优势是可以使用更短的密钥,来实现与RSA相当或更高的安全。
椭圆曲线在密码学中的使用,是1985年由Neal Koblitz和Victor Miller分别独立提出的。
比特币就是用ECC来做签名和验签。
优点
- 安全性高。160位ECC加密安全性相当于1024位RSA加密,210位ECC加密安全性相当