Encrypt R objects to a raw vector or file using modern cryptographic techniques. Password-based key derivation is with 'Argon2' (< https://en.wikipedia.org/wiki/Argon2>). Objects are serialized and then encrypted using 'XChaCha20-Poly1305' (< https://en.wikipedia.org/wiki/ChaCha20-Poly1305>) which follows RFC 8439 for authenticated encryption (< https://en.wikipedia.org/wiki/Authenticated_encryption>). Cryptographic functions are provided by the included 'monocypher' 'C' library (< https://monocypher.org>).
{rmonocypher} provides a simple, high-level interface for easily
encrypting R objects using a strong, modern cryptographic technique.
A typical use-case this package addresses:
I want to easily encrypt and save data to a public location
(e.g. shared drive, cloud drive, etc) which only I can decrypt.
decrypt()/encrypt() read/write encrypted R objects to fileargon2() derives encryption keys from passwordsrbyte() generates secure random bytes using your operating system’s
CSPRNG.monocypher library (v4.0.2)You can install the latest development version from GitHub with:
# install.package('remotes')
remotes::install_github('coolbutuseless/rmonocypher')
Encrypt any R object and save to file.
encrypt(mydata, dst = "SharedDrive/mydata.dat", key = "mykey")
Then decrypt the object using the same key.
decrypt(src = "SharedDrive/mydata.dat", key = "mykey")
For more details on how passwords are used to derive encryption keys, and for other ways of supplying and generating keys see the Vignette: Encryption Keys.
argon2()