33 lines
685 B
Go
33 lines
685 B
Go
package crypto
|
|
|
|
import (
|
|
"crypto/aes"
|
|
"crypto/cipher"
|
|
"crypto/rand"
|
|
"encoding/hex"
|
|
"fmt"
|
|
)
|
|
|
|
var (
|
|
someDumbKey = []byte("9530e001b619e8e98a889055f06821bb")
|
|
)
|
|
|
|
func Encrypt(plaintext string) (hexed string, err error) {
|
|
aes, err := aes.NewCipher(someDumbKey)
|
|
if err != nil {
|
|
return "", fmt.Errorf("making new cipher: %w", err)
|
|
}
|
|
gcm, err := cipher.NewGCM(aes)
|
|
if err != nil {
|
|
return "", fmt.Errorf("making new gcm: %w", err)
|
|
}
|
|
|
|
nonce := make([]byte, gcm.NonceSize())
|
|
_, err = rand.Read(nonce)
|
|
if err != nil {
|
|
return "", fmt.Errorf("generating nonce: %w", err)
|
|
}
|
|
outvalue := gcm.Seal(nonce, nonce, []byte(plaintext), nil)
|
|
return hex.EncodeToString(outvalue), nil
|
|
}
|