rmonocypher provides a simple, high-level interface for easily encrypting R objects using a strong, modern cryptographic technique.

The key 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.

What’s in the box

Technical bona fides

Installation

This package can be installed from CRAN

install.packages('rmonocypher')

You can install the latest development version from GitHub with:

# install.package('remotes')
remotes::install_github('coolbutuseless/rmonocypher')

Pre-built source/binary versions can also be installed from R-universe

install.packages('rmonocypher', repos = c('https://coolbutuseless.r-universe.dev', 'https://cloud.r-project.org'))

Read/write data to an encrypted file

Encrypt any R object and save to file.

encrypt(mtcars, 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.

Vignettes

  • Encryption Keys
    • Generating encryption keys from passwords with argon2()
    • Using random bytes as the encryption key
    • Using hexadecimal string as the encryption key
  • Technical Notes
    • Background on the encryptiong techniques used
  • Using Additional Data
    • Advanced technique which is not needed for regular use of this package.
    • Details on using additional data
    • Worked example