safer v0.1.0

0

Monthly downloads

0th

Percentile

by KS Srikanth

Encrypt and Decrypt Strings, R Objects and Files

A consistent interface to encrypt and decrypt strings, R objects and files using symmetric key encryption.

Readme


Introduction

The package intends to provide a consistent interface to encrypt/decrypt strings, R objects, files. This is based on the excellent packages sodium and base64enc. Currently, only symmetric key encryption (same key to encrypt and decrypt) is used.

Design

There are four functions and their (inverses).

  • encryt_string (decrypt_string)
  • encryt_object (decrypt_object)
  • encryt_file (decrypt_file)
  • save_object (retrieve_object)

The following table summarizes their functionality:

Function Input Output Has side-effect
encryt_string a string string No
encryt_object a R object raw/string No
encrypt_file a file on disk TRUE Yes (Output to disk)
save_object a R object TRUE Yes (Output to disk)

Examples

library("safer")

String

temp <- encrypt_string("hello, how are you", key = "secret")
all(
  is.character(temp)
  , decrypt_string(temp, "secret") == "hello, how are you"
  , class(try(decrypt_string(temp, "nopass"), silent = TRUE)) == "try-error")

## [1] TRUE

Henceforth, we shall default password: pass.

Object

temp <- encrypt_object(1:3)
all(
  is.raw(temp)
  , decrypt_object(temp) == 1:3)

## [1] TRUE

temp <- encrypt_object(iris, ascii = TRUE)
all(
  is.character(temp)
  , decrypt_object(temp) == iris
  , identical(decrypt_object(temp), iris))

## [1] TRUE

rm(temp)

File

 write.table(iris, "iris.csv")
 all(
   encrypt_file("iris.csv", "iris_encrypted.bin")
   , file.exists("iris_encrypted.bin")
   , decrypt_file("iris_encrypted.bin", "iris_2.csv")
   , file.exists("iris_2.csv")
   , tools::md5sum("iris_2.csv") == tools::md5sum("iris.csv")
   , unlink("iris.csv") == 0
   , unlink("iris_2.csv") == 0
   , unlink("iris_encrypted.bin") == 0
 )

## [1] TRUE

 write.table(iris, "iris.csv")
 all(
   encrypt_file("iris.csv", "iris_encrypted.txt", ascii = TRUE)
   , file.exists("iris_encrypted.txt")
   , decrypt_file("iris_encrypted.txt", "iris_2.csv", ascii = TRUE)
   , file.exists("iris_2.csv")
   , tools::md5sum("iris_2.csv") == tools::md5sum("iris.csv")
   , unlink("iris.csv") == 0
   , unlink("iris_2.csv") == 0
   , unlink("iris_encrypted.txt") == 0
 )

## [1] TRUE

Save

 all(
   save_object(iris, conn = "iris_safer.bin")
   , identical(retrieve_object(conn = "iris_safer.bin"), iris)
   , unlink("iris_safer.bin") == 0
 )

## [1] TRUE

 all(
   save_object(iris, conn = "iris_safer_2.txt", ascii = TRUE)
   , identical(retrieve_object(conn = "iris_safer_2.txt", ascii = TRUE), iris)
   , unlink("iris_safer_2.txt") == 0
 )

## [1] TRUE

Functions in safer

Name Description
encrypt_object Encrypt a R object
encrypt_string Encrypt a string
save_object Save a R object to a connection
retrieve_object Retrieve a R object from a connection
safer-package safer
decrypt_string Decrypt an encrypted string
encrypt_file Encrypt a file
decrypt_file Decrypt a connection or file
decrypt_object Decrypt an encrypted R object
No Results!

Last month downloads

Details

Type Package
License GPL-3
URL https://github.com/talegari/safer
BugReports https://github.com/talegari/safer/issues
Encoding UTF-8
LazyData true
RoxygenNote 6.0.1
NeedsCompilation no
Packaged 2017-04-21 13:39:02 UTC; srik
Repository CRAN
Date/Publication 2017-04-21 13:49:28 UTC

Include our badge in your README

[![Rdoc](http://www.rdocumentation.org/badges/version/safer)](http://www.rdocumentation.org/packages/safer)