func (e *Encryption) Key() Key {
	return e.key
}
Key returns the base key
package encryption
import (
	"crypto/rand"
	"encoding/binary"
	"fmt"
	"hash"
)
const (
	KeyLength     = 32
	ReferenceSize = 64
)
type Key []byte
type Encrypter interface {
	Key() Key
	Encrypt(data []byte) ([]byte, error)
}
type Decrypter interface {
	Key() Key
	Decrypt(data []byte) ([]byte, error)
}
type Interface interface {
	Encrypter
	Decrypter
	Reset()
}
type Encryption struct {
	key      Key               
	keyLen   int               
	padding  int               
	index    int               
	initCtr  uint32            
	hashFunc func() hash.Hash  
}
func New(key Key, padding int, initCtr uint32, hashFunc func() hash.Hash) Interface {
	return &Encryption{
		key:      key,
		keyLen:   len(key),
		padding:  padding,
		initCtr:  initCtr,
		hashFunc: hashFunc,
	}
}