Passing this along, FYI.
Crypto has always been a little mysterious to me.
I’ve been enjoying training videos by Caleb Doxsey and just created these examples. I like them for their clarity.
I’m using “golang.org/x/crypto/nacl/secretbox” and encrypting like this:
func encrypt(decrypted string, password [32]byte) string {
var nonce [24]byte
io.ReadAtLeast(rand.Reader, nonce[:], 24)
encrypted := secretbox.Seal(nil, []byte(decrypted), &nonce, &password)
return fmt.Sprintf("%x:%x", nonce[:], encrypted)
}
When I run the code, I get this:
BEFORE ENCRYPTION: some message that you want to store / send securely
ENCRYPTED: 2254e07684e278f7660a1bda741f02946837d03f1740ae4b:8b269d05b67a542145d91dfaf99d0642e6eb849b120545fc63d401a7f9767e7db3bf33d3b3c247a41172c132f6e487e2ac259dc2af844d631eb757068e7bfe68bd6330
AFTER DECRYPTING: some message that you want to store / send securely
The nonce is a number that is only used once. It helps prevent a replay attack.
Many thanks to Caleb Doxsey for his awesome trainings.