1 Star 0 Fork 0

h79/goutils

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
sm4.go 1.01 KB
一键复制 编辑 原始数据 按行查看 历史
huqiuyun 提交于 2023-08-26 00:18 . sm4 支持
package algorithm
import (
"crypto/cipher"
"encoding/base64"
"github.com/tjfoc/gmsm/sm4"
)
type Sm4 struct {
}
func (s *Sm4) Encrypt(raw, key []byte) (string, error) {
data, err := s.sm4Encrypt(raw, key)
if err != nil {
return "", err
}
return base64.StdEncoding.EncodeToString(data), nil
}
func (s *Sm4) Decrypt(raw string, key []byte) ([]byte, error) {
data, err := base64.StdEncoding.DecodeString(raw)
if err != nil {
return nil, err
}
return s.sm4Decrypt(data, key)
}
// 加密
func (s *Sm4) sm4Encrypt(raw []byte, key []byte) ([]byte, error) {
enc := NewECB(func(key []byte) (cipher.Block, error) {
block, err := sm4.NewCipher(key)
if err != nil {
return nil, err
}
return block, nil
})
return enc.Encrypt(raw, key, nil)
}
// 解密
func (s *Sm4) sm4Decrypt(raw []byte, key []byte) ([]byte, error) {
enc := NewECB(func(key []byte) (cipher.Block, error) {
block, err := sm4.NewCipher(key)
if err != nil {
return nil, err
}
return block, nil
})
return enc.Decrypt(raw, key, nil)
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/h79/goutils.git
git@gitee.com:h79/goutils.git
h79
goutils
goutils
v1.9.2

搜索帮助

344bd9b3 5694891 D2dac590 5694891