代码拉取完成,页面将自动刷新
package main
import (
"crypto/rand"
"fmt"
"gitee.com/jiangjiali/gmsm/x509"
"log"
)
func main() {
//priv, err := sm2.GenerateKey(rand.Reader) // 生成密钥对
//if err != nil {
// log.Fatal(err)
//}
//
//pemPrivate, err := x509.WritePrivateKeyToPem(priv, []byte("jiangjiali"))
//if err != nil {
// return
//}
//fmt.Printf("PrivateKey: %x\n", string(pemPrivate))
//
//
//pemPublic, err := x509.WritePublicKeyToPem(&priv.PublicKey)
//if err != nil {
// return
//}
//fmt.Printf("PublicKey: %x\n",string(pemPublic))
//私钥
priv, err := x509.LoadFromPriPemFile("./cert_test/pri_key.pem", []byte("jiangjiali"))
if err != nil {
return
}
//公钥
pub, err := x509.LoadFromPubPemFile("./cert_test/pub_key.pem")
if err != nil {
return
}
//信息
msg := []byte("Tongji Fintech Research Institute")
// 客户端->服务端
ciphertxt, err := pub.EncryptAsn1(msg, rand.Reader) //sm2加密
if err != nil {
log.Fatal(err)
}
fmt.Printf("公钥加密结果:%x\n", ciphertxt)
plaintxt, err := priv.DecryptAsn1(ciphertxt) //sm2解密
if err != nil {
log.Fatal(err)
}
fmt.Printf("私钥解密结果:%s\n", plaintxt)
sign, err := priv.Sign(rand.Reader, msg, nil) //sm2签名
if err != nil {
log.Fatal(err)
}
fmt.Printf("签名:%x\n", sign)
isok := pub.Verify(msg, sign) //sm2验签
fmt.Printf("Verified: %v\n", isok)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。