func CTREncrypt(plainText PlainText, secret Secret) (CipherText, error) {
	block, err := aes.NewCipher(secret[:])
	if err != nil {
		return CipherText{}, err
	}
	iv := make([]byte, 16)
	_, err = io.ReadFull(ctrRandReader, iv)
	if err != nil {
		return CipherText{}, err
	}
	cipherText := make([]byte, len(plainText))
	stream := cipher.NewCTR(block, iv)
	stream.XORKeyStream(cipherText, plainText)
	ct := CipherText{
		IV:         iv,
		CipherText: cipherText,
		Version:    2,
	}
	mac, err := vTwoMac(ct, secret)
	ct.Mac = mac
	return ct, err
}
encrypt plain text by given key using AES CTR 256
package aes
import (
	"crypto/aes"
	"crypto/cipher"
	"crypto/rand"
	"io"
)
var ctrRandReader io.Reader = rand.Reader