代码拉取完成,页面将自动刷新
package utils
import (
"bytes"
"crypto/aes"
"crypto/cipher"
"encoding/hex"
"github.com/spf13/viper"
)
//支持16、24、32bytes的密钥
//aes加密,输入string格式的明文,返回hex string格式的密文
func AesCtrEncrypt(plaintext string) (string, error) {
key := []byte(viper.GetString("aes.key"))
msg := []byte(plaintext)
// 创建aes密码接口
block, err := aes.NewCipher(key)
if err != nil {
return "", err
}
// 创建分组模式ctr
iv := bytes.Repeat([]byte("1"), block.BlockSize())
stream := cipher.NewCTR(block, iv)
// 加密
dst := make([]byte, len(msg))
stream.XORKeyStream(dst, msg)
//返回hex string格式的密文
return hex.EncodeToString(dst), nil
}
//aes解密,输入hex string格式的密文,返回string格式的明文
func AesCtrDecrypt(ciphertext string) (string, error) {
key := []byte(viper.GetString("aes.key"))
msg, err := hex.DecodeString(ciphertext)
if err != nil {
return "", err
}
// 创建aes密码接口
block, err := aes.NewCipher(key)
if err != nil {
return "", err
}
// 创建分组模式ctr
iv := bytes.Repeat([]byte("1"), block.BlockSize())
stream := cipher.NewCTR(block, iv)
// 解密
dst := make([]byte, len(msg))
stream.XORKeyStream(dst, msg)
//返回string格式的密文
return string(dst), nil
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。