Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
golang aes-256-gcm
package main
import (
"crypto/aes"
"crypto/cipher"
"crypto/rand"
"encoding/hex"
"fmt"
"io"
)
func ExampleNewGCMEncrypter() {
// The key argument should be the AES key, either 16 or 32 bytes
// to select AES-128 or AES-256.
key := []byte("AES256Key-32Characters1234567890")
plaintext := []byte("exampleplaintext")
block, err := aes.NewCipher(key)
if err != nil {
panic(err.Error())
}
// Never use more than 2^32 random nonces with a given key because of the risk of a repeat.
nonce := make([]byte, 12)
if _, err := io.ReadFull(rand.Reader, nonce); err != nil {
panic(err.Error())
}
fmt.Printf("%x\n", nonce)
aesgcm, err := cipher.NewGCM(block)
if err != nil {
panic(err.Error())
}
ciphertext := aesgcm.Seal(nil, nonce, plaintext, nil)
fmt.Printf("%x\n", ciphertext)
}
func ExampleNewGCMDecrypter() {
// The key argument should be the AES key, either 16 or 32 bytes
// to select AES-128 or AES-256.
key := []byte("AES256Key-32Characters1234567890")
ciphertext, _ := hex.DecodeString("2df87baf86b5073ef1f03e3cc738de75b511400f5465bb0ddeacf47ae4dc267d")
nonce, _ := hex.DecodeString("afb8a7579bf971db9f8ceeed")
block, err := aes.NewCipher(key)
if err != nil {
panic(err.Error())
}
aesgcm, err := cipher.NewGCM(block)
if err != nil {
panic(err.Error())
}
plaintext, err := aesgcm.Open(nil, nonce, ciphertext, nil)
if err != nil {
panic(err.Error())
}
fmt.Printf("%s\n", plaintext)
// Output: exampleplaintext
}
func main() {
ExampleNewGCMEncrypter()
ExampleNewGCMDecrypter()
}
@Iptihar

This comment has been minimized.

Copy link

@Iptihar Iptihar commented Nov 10, 2017

cool stuff, like it, thanks for sharing !

@Xeoncross

This comment has been minimized.

Copy link

@Xeoncross Xeoncross commented Mar 30, 2018

@tinti

This comment has been minimized.

Copy link

@tinti tinti commented May 23, 2018

@jrwren

This comment has been minimized.

Copy link

@jrwren jrwren commented Feb 28, 2019

What is the magic string afb8a7579bf971db9f8ceeed on line 45?

@Codefor

This comment has been minimized.

Copy link

@Codefor Codefor commented Apr 18, 2019

afb8a7579bf971db9f8ceeed should be the nonce outputed on line 28

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment