42 lines
913 B
Go
42 lines
913 B
Go
package union_pay
|
|
|
|
import (
|
|
"encoding/base64"
|
|
"fmt"
|
|
"github.com/tjfoc/gmsm/sm4"
|
|
)
|
|
|
|
func Encrypt(txt, key, iv []byte) (string, error) {
|
|
pk := HexToBytes(key)
|
|
|
|
err := sm4.SetIV(iv)
|
|
if err != nil {
|
|
return "", fmt.Errorf("sm4.SetIV err:%v", err)
|
|
}
|
|
cipherTxt, err := sm4.Sm4Cbc(pk, txt, true)
|
|
if err != nil {
|
|
return "", fmt.Errorf("sm4.Sm4Cbc err:%v", err)
|
|
}
|
|
|
|
return base64.StdEncoding.EncodeToString(cipherTxt), nil
|
|
}
|
|
|
|
func Decrypt(txt string, key []byte, iv []byte) (string, error) {
|
|
plainText, err := base64.StdEncoding.DecodeString(txt)
|
|
if err != nil {
|
|
return "", fmt.Errorf("base64.StdEncoding.DecodeString err:%v", err)
|
|
}
|
|
pk := HexToBytes(key)
|
|
|
|
err = sm4.SetIV(iv)
|
|
if err != nil {
|
|
return "", fmt.Errorf("sm4.SetIV err:%v", err)
|
|
}
|
|
cipherTxt, err := sm4.Sm4Cbc(pk, plainText, false)
|
|
if err != nil {
|
|
return "", fmt.Errorf("sm4.Sm4Cbc err:%v", err)
|
|
}
|
|
|
|
return string(cipherTxt), nil
|
|
}
|