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() | |
} |
This comment has been minimized.
This comment has been minimized.
GCM is highly recommended. However, notice that the whole plaintext/ciphertext has to fit into memory. |
This comment has been minimized.
This comment has been minimized.
Code above as a tool: https://gist.github.com/tinti/1afe25d09ed918b4b3cf5bea8632e798 |
This comment has been minimized.
This comment has been minimized.
What is the magic string |
This comment has been minimized.
This comment has been minimized.
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
cool stuff, like it, thanks for sharing !