This library enables the encryption/decryption of arbitrary data into a hex-encoded string for safe on-disk storage.
go get github.com/jantytgat/go-transcrypt
Next, you can manually add the import statement to your .go
-file, or have it added automatically when using it.
import github.com/jantytgat/go-transcrypt
The encryption key is a string provide to encrypt the data with.
A function CreateHexKey(bitSize int)
is available to create a random key based on an RSA Private Key, and returns
it as a hex-encoded string.
var err error
var key string
if key, err = transcrypt.CreateHexKey(2048); err != nil {
panic(err)
}
A salt is also required for proper encryption.
It is possible to either generate a new salt for every call, by leaving the salt to nil
when calling the ``
Encrypt``` function.
If you want to use a specific salt, you can either provide it manually (at least 12 bytes) or generate one.
var salt []byte
if salt, err = transcrypt.CreateSalt(); err != nil {
panic(err)
}
Currently, the following data types are supported for encryption:
- string
- int
var inputString = "hello world"
var encryptedString string
if encryptedString, err = transcrypt.Encrypt(key, salt, transcrypt.AES_256_GCM, inputString); err != nil {
panic(err)
}
var decryptedString any
if decryptedString, err = transcrypt.Decrypt(key, encryptedString); err != nil {
panic(err)
}
An example is available in the examples directory.