liuhaijun 3f5f28d785 add sheduling agent
Change-Id: I89f35fb3984044c57f10727432755012542f9fd8
2023-11-16 10:55:57 +00:00

70 lines
1.6 KiB
Go

package crypto
import (
"bytes"
"crypto/aes"
"crypto/cipher"
"encoding/base64"
)
var (
seckey = []byte("Q1A2Z3X!D^R$T&G*B(N)U088") //24Byte
base64Tables = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
iv = []byte{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}
)
func base64Decode(src string) ([]byte, error) {
coder := base64.NewEncoding(base64Tables)
return coder.DecodeString(src)
}
func aesPadding(src []byte, blockSize int) []byte {
padding := blockSize - len(src)%blockSize
padtext := bytes.Repeat([]byte{byte(padding)}, padding)
return append(src, padtext...)
}
func aesUnPadding(src []byte) []byte {
length := len(src)
unpadding := int(src[length-1])
return src[:(length - unpadding)]
}
func Encrypt(src string) (string, error) {
block, err := aes.NewCipher(seckey)
if err != nil {
return "", nil
}
arr := aesPadding([]byte(src), aes.BlockSize)
mode := cipher.NewCBCEncrypter(block, iv)
mode.CryptBlocks(arr, arr)
return string(arr), nil
}
func Decrypt(src string) (string, error) {
block, err := aes.NewCipher(seckey)
if err != nil {
return "", nil
}
arr := []byte(src)
mode := cipher.NewCBCDecrypter(block, iv)
mode.CryptBlocks(arr, arr)
arr = aesUnPadding(arr)
return string(arr), nil
}
func Base64AndDecrypt(src string) (string, error) {
block, err := aes.NewCipher(seckey)
if err != nil {
return "", nil
}
arr, err := base64Decode(src)
if err != nil {
return "", err
}
mode := cipher.NewCBCDecrypter(block, iv)
mode.CryptBlocks(arr, arr)
arr = aesUnPadding(arr)
return string(arr), nil
}