Golang实现Sm2加解密
以下是一个简单的Go语言实现SM2公钥加密和私钥解密的例子。请注意,这里仅提供了核心函数,实际应用中你需要处理错误和使用正确的密钥。
package main
import (
"fmt"
"github.com/tjfoc/gmsm/sm2"
"github.com/tjfoc/gmsm/x509"
)
func main() {
// 生成SM2密钥对
priv, err := sm2.GenerateKey(nil)
if err != nil {
panic(err)
}
// 公钥编码
pubASN1, err := x509.EncryptSM2PublicKey(priv.Public().(*sm2.PublicKey))
if err != nil {
panic(err)
}
// 公钥解码
pubDecoded, err := x509.DecryptSM2PublicKey(pubASN1, nil)
if err != nil {
panic(err)
}
// 明文
plaintext := []byte("Hello, SM2!")
// 公钥加密
ciphertext, err := sm2.Encrypt(rand.Reader, pubDecoded, plaintext)
if err != nil {
panic(err)
}
// 私钥解密
decrypted, err := sm2.Decrypt(priv, ciphertext)
if err != nil {
panic(err)
}
fmt.Printf("Decrypted text: %s\n", decrypted)
}
这段代码首先生成了一个SM2的密钥对,然后对公钥进行了编码和解码。接着使用公钥对一段文本进行加密,最后使用私钥对加密后的文本进行解密。在实际应用中,你需要处理好密钥的管理和分发,确保公钥可以安全地分发给需要加密信息的其他方。
评论已关闭