40 lines
791 B
Go
40 lines
791 B
Go
package protectString
|
|
|
|
import (
|
|
"crypto/aes"
|
|
"crypto/cipher"
|
|
"encoding/hex"
|
|
"fmt"
|
|
)
|
|
|
|
func Decrypt(encryptedString string, keyString string) (decryptedString string) {
|
|
key, _ := hex.DecodeString(keyString)
|
|
enc, _ := hex.DecodeString(encryptedString)
|
|
|
|
//Create a new Cipher Block from the key
|
|
block, err := aes.NewCipher(key)
|
|
if err != nil {
|
|
panic(err.Error())
|
|
}
|
|
|
|
//Create a new GCM
|
|
aesGCM, err := cipher.NewGCM(block)
|
|
if err != nil {
|
|
panic(err.Error())
|
|
}
|
|
|
|
//Get the nonce size
|
|
nonceSize := aesGCM.NonceSize()
|
|
|
|
//Extract the nonce from the encrypted data
|
|
nonce, ciphertext := enc[:nonceSize], enc[nonceSize:]
|
|
|
|
//Decrypt the data
|
|
plaintext, err := aesGCM.Open(nil, nonce, ciphertext, nil)
|
|
if err != nil {
|
|
panic(err.Error())
|
|
}
|
|
|
|
return fmt.Sprintf("%s", plaintext)
|
|
}
|