Go bindings for mcrypt library.
Should be compatible with most algo/modes supported by libmcrypt.
- libmcrypt (http://mcrypt.sourceforge.net/)
package main
import (
"fmt"
mcrypt "github.com/mfpierre/go-mcrypt"
)
func main() {
key := []byte("here is a random key of 32 bytes")
plaintext := []byte("here is what you want to encrypt")
iv := make([]byte, 16)
// using CAST-256 in ECB mode
encrypted, _ := mcrypt.Encrypt(key, iv, plaintext, "cast-256", "ecb")
decrypted, _ := mcrypt.Decrypt(key, iv, encrypted, "cast-256", "ecb")
fmt.Println(encrypted)
fmt.Println(decrypted)
}
Below a reminder of IV & Key size that you can use depending on algo/mode settings
Cipher Name | Block Mode | Block Size | IV Size | Default Key Size | All Key Size(s) |
---|---|---|---|---|---|
CAST-128 | CBC | 8 | 8 | 16 | 16 |
CAST-128 | ECB | 8 | 8 | 16 | 16 |
CAST-128 | OFB | 8 | 8 | 16 | 16 |
CAST-128 | NOFB | 8 | 8 | 16 | 16 |
CAST-128 | CFB | 8 | 8 | 16 | 16 |
CAST-128 | NCFB | 8 | 8 | 16 | 16 |
CAST-128 | CTR | 8 | 8 | 16 | 16 |
GOST | CBC | 8 | 8 | 32 | 32 |
GOST | ECB | 8 | 8 | 32 | 32 |
GOST | OFB | 8 | 8 | 32 | 32 |
GOST | NOFB | 8 | 8 | 32 | 32 |
GOST | CFB | 8 | 8 | 32 | 32 |
GOST | NCFB | 8 | 8 | 32 | 32 |
GOST | CTR | 8 | 8 | 32 | 32 |
Rijndael-128 | CBC | 16 | 16 | 32 | 16 24 32 |
Rijndael-128 | ECB | 16 | 16 | 32 | 16 24 32 |
Rijndael-128 | OFB | 16 | 16 | 32 | 16 24 32 |
Rijndael-128 | NOFB | 16 | 16 | 32 | 16 24 32 |
Rijndael-128 | CFB | 16 | 16 | 32 | 16 24 32 |
Rijndael-128 | NCFB | 16 | 16 | 32 | 16 24 32 |
Rijndael-128 | CTR | 16 | 16 | 32 | 16 24 32 |
Twofish | CBC | 16 | 16 | 32 | 16 24 32 |
Twofish | ECB | 16 | 16 | 32 | 16 24 32 |
Twofish | OFB | 16 | 16 | 32 | 16 24 32 |
Twofish | NOFB | 16 | 16 | 32 | 16 24 32 |
Twofish | CFB | 16 | 16 | 32 | 16 24 32 |
Twofish | NCFB | 16 | 16 | 32 | 16 24 32 |
Twofish | CTR | 16 | 16 | 32 | 16 24 32 |
RC4 | STREAM | 1 | 0 | 256 | |
CAST-256 | CBC | 16 | 16 | 32 | 16 24 32 |
CAST-256 | ECB | 16 | 16 | 32 | 16 24 32 |
CAST-256 | OFB | 16 | 16 | 32 | 16 24 32 |
CAST-256 | NOFB | 16 | 16 | 32 | 16 24 32 |
CAST-256 | CFB | 16 | 16 | 32 | 16 24 32 |
CAST-256 | NCFB | 16 | 16 | 32 | 16 24 32 |
CAST-256 | CTR | 16 | 16 | 32 | 16 24 32 |
LOKI97 | CBC | 16 | 16 | 32 | 16 24 32 |
LOKI97 | ECB | 16 | 16 | 32 | 16 24 32 |
LOKI97 | OFB | 16 | 16 | 32 | 16 24 32 |
LOKI97 | NOFB | 16 | 16 | 32 | 16 24 32 |
LOKI97 | CFB | 16 | 16 | 32 | 16 24 32 |
LOKI97 | NCFB | 16 | 16 | 32 | 16 24 32 |
LOKI97 | CTR | 16 | 16 | 32 | 16 24 32 |
Rijndael-192 | CBC | 24 | 24 | 32 | 16 24 32 |
Rijndael-192 | ECB | 24 | 24 | 32 | 16 24 32 |
Rijndael-192 | OFB | 24 | 24 | 32 | 16 24 32 |
Rijndael-192 | NOFB | 24 | 24 | 32 | 16 24 32 |
Rijndael-192 | CFB | 24 | 24 | 32 | 16 24 32 |
Rijndael-192 | NCFB | 24 | 24 | 32 | 16 24 32 |
Rijndael-192 | CTR | 24 | 24 | 32 | 16 24 32 |
Safer+ | CBC | 16 | 16 | 32 | 16 24 32 |
Safer+ | ECB | 16 | 16 | 32 | 16 24 32 |
Safer+ | OFB | 16 | 16 | 32 | 16 24 32 |
Safer+ | NOFB | 16 | 16 | 32 | 16 24 32 |
Safer+ | CFB | 16 | 16 | 32 | 16 24 32 |
Safer+ | NCFB | 16 | 16 | 32 | 16 24 32 |
Safer+ | CTR | 16 | 16 | 32 | 16 24 32 |
WAKE | STREAM | 1 | 0 | 32 | 32 |
Blowfish | CBC | 8 | 8 | 56 | |
Blowfish | ECB | 8 | 8 | 56 | |
Blowfish | OFB | 8 | 8 | 56 | |
Blowfish | NOFB | 8 | 8 | 56 | |
Blowfish | CFB | 8 | 8 | 56 | |
Blowfish | NCFB | 8 | 8 | 56 | |
Blowfish | CTR | 8 | 8 | 56 | |
DES | CBC | 8 | 8 | 8 | 8 |
DES | ECB | 8 | 8 | 8 | 8 |
DES | OFB | 8 | 8 | 8 | 8 |
DES | NOFB | 8 | 8 | 8 | 8 |
DES | CFB | 8 | 8 | 8 | 8 |
DES | NCFB | 8 | 8 | 8 | 8 |
DES | CTR | 8 | 8 | 8 | 8 |
Rijndael-256 | CBC | 32 | 32 | 32 | 16 24 32 |
Rijndael-256 | ECB | 32 | 32 | 32 | 16 24 32 |
Rijndael-256 | OFB | 32 | 32 | 32 | 16 24 32 |
Rijndael-256 | NOFB | 32 | 32 | 32 | 16 24 32 |
Rijndael-256 | CFB | 32 | 32 | 32 | 16 24 32 |
Rijndael-256 | NCFB | 32 | 32 | 32 | 16 24 32 |
Rijndael-256 | CTR | 32 | 32 | 32 | 16 24 32 |
Serpent | CBC | 16 | 16 | 32 | 16 24 32 |
Serpent | ECB | 16 | 16 | 32 | 16 24 32 |
Serpent | OFB | 16 | 16 | 32 | 16 24 32 |
Serpent | NOFB | 16 | 16 | 32 | 16 24 32 |
Serpent | CFB | 16 | 16 | 32 | 16 24 32 |
Serpent | NCFB | 16 | 16 | 32 | 16 24 32 |
Serpent | CTR | 16 | 16 | 32 | 16 24 32 |
xTEA | CBC | 8 | 8 | 16 | 16 |
xTEA | ECB | 8 | 8 | 16 | 16 |
xTEA | OFB | 8 | 8 | 16 | 16 |
xTEA | NOFB | 8 | 8 | 16 | 16 |
xTEA | CFB | 8 | 8 | 16 | 16 |
xTEA | NCFB | 8 | 8 | 16 | 16 |
xTEA | CTR | 8 | 8 | 16 | 16 |
Blowfish | CBC | 8 | 8 | 56 | |
Blowfish | ECB | 8 | 8 | 56 | |
Blowfish | OFB | 8 | 8 | 56 | |
Blowfish | NOFB | 8 | 8 | 56 | |
Blowfish | CFB | 8 | 8 | 56 | |
Blowfish | NCFB | 8 | 8 | 56 | |
Blowfish | CTR | 8 | 8 | 56 | |
enigma | STREAM | 1 | 0 | 13 | |
RC2 | CBC | 8 | 8 | 128 | |
RC2 | ECB | 8 | 8 | 128 | |
RC2 | OFB | 8 | 8 | 128 | |
RC2 | NOFB | 8 | 8 | 128 | |
RC2 | CFB | 8 | 8 | 128 | |
RC2 | NCFB | 8 | 8 | 128 | |
RC2 | CTR | 8 | 8 | 128 | |
3DES | CBC | 8 | 8 | 24 | 24 |
3DES | ECB | 8 | 8 | 24 | 24 |
3DES | OFB | 8 | 8 | 24 | 24 |
3DES | NOFB | 8 | 8 | 24 | 24 |
3DES | CFB | 8 | 8 | 24 | 24 |
3DES | NCFB | 8 | 8 | 24 | 24 |
3DES | CTR | 8 | 8 | 24 | 24 |
Thanks to https://github.com/tblyler/go-mcrypt for initial implementation with rijndael