https://github.com/mfpierre/go-mcrypt
Go bindings for mcrypt library
https://github.com/mfpierre/go-mcrypt
golang libmcrypt mcrypt
Last synced: 6 months ago
JSON representation
Go bindings for mcrypt library
- Host: GitHub
- URL: https://github.com/mfpierre/go-mcrypt
- Owner: mfpierre
- License: mit
- Created: 2017-05-26T13:26:07.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2017-05-29T16:07:13.000Z (about 8 years ago)
- Last Synced: 2024-10-14T09:36:41.346Z (8 months ago)
- Topics: golang, libmcrypt, mcrypt
- Language: Go
- Size: 15.6 KB
- Stars: 13
- Watchers: 1
- Forks: 7
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# go-mcrypt
[](https://travis-ci.org/mfpierre/go-mcrypt)
Go bindings for mcrypt library.
Should be compatible with most algo/modes supported by libmcrypt.
## Requirements
* libmcrypt (http://mcrypt.sourceforge.net/)## Usage
```go
package mainimport (
"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|## Credits
Thanks to https://github.com/tblyler/go-mcrypt for initial implementation with rijndael