| Title: | Encryption and Decryption of Files and Data for Researchers Without Coding Skills |
|---|---|
| Description: | Support functions for R-based "EQUALencrypt - Encrypt and decrypt whole files" and "EQUALencrypt - Encrypt and decrypt columns of data" shiny applications which allow researchers without coding skills or expertise in encryption algorithms to share data after encryption. Gurusamy,K (2025)<doi:10.5281/zenodo.16743676> and Gurusamy,K (2025)<doi:10.5281/zenodo.16744058>. |
| Authors: | Kurinchi Gurusamy [aut, cre] |
| Maintainer: | Kurinchi Gurusamy <[email protected]> |
| License: | GPL (>= 3) |
| Version: | 0.1.0 |
| Built: | 2026-05-23 07:21:20 UTC |
| Source: | https://github.com/cran/EQUALencrypt |
"Decrypts data using the private key generated by
EQUAL_encrypt_generate_keys()
function and openssl. This reverses the process followed in
EQUAL_encrypt_data() function."
EQUAL_decrypt_data(encrypted_data, private_key_folder, key_name)EQUAL_decrypt_data(encrypted_data, private_key_folder, key_name)
encrypted_data |
Encrypted data that must be decrypted |
private_key_folder |
Location of the private key |
key_name |
Name of the private key |
decrypted data
"This is part of a suite of functions required to allow encrypting and decrypting whole files and encrypting and decrypting columns of data programs to run. This is unlikely to be used as a stand alone function."
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
EQUAL_encrypt_generate_keys()
openssl::aes_cbc_decrypt()
openssl::rsa_decrypt()
library(openssl) # Encryption keys #### test_folder <- tempfile(pattern = "folder_") public_key_folder <- paste0(test_folder, "/public_key_folder") private_key_folder <- paste0(test_folder, "/private_key_folder") dir.create(test_folder) dir.create(public_key_folder) dir.create(private_key_folder) encryption_keys <- EQUAL_encrypt_generate_keys( public_key_folder = public_key_folder, private_key_folder = private_key_folder, key_name = "encryption_key.txt") # Data #### data <- lapply(1:3, function(x) { mean = sample(1:100, 1, replace = FALSE) sd = sample(1:100, 1, replace = FALSE) rnorm(100, mean = mean, sd = sd) }) data <- do.call(cbind.data.frame, data) colnames(data) <- paste0("v", formatC(1:3, width = 6, flag = "0")) # Encrypt data #### encrypted_data <- EQUAL_encrypt_data(data = data, public_key_folder = public_key_folder, key_name = "encryption_key.txt") # Decrypt data #### decrypted_data <- EQUAL_decrypt_data(encrypted_data = encrypted_data, private_key_folder = private_key_folder, key_name = "encryption_key.txt")library(openssl) # Encryption keys #### test_folder <- tempfile(pattern = "folder_") public_key_folder <- paste0(test_folder, "/public_key_folder") private_key_folder <- paste0(test_folder, "/private_key_folder") dir.create(test_folder) dir.create(public_key_folder) dir.create(private_key_folder) encryption_keys <- EQUAL_encrypt_generate_keys( public_key_folder = public_key_folder, private_key_folder = private_key_folder, key_name = "encryption_key.txt") # Data #### data <- lapply(1:3, function(x) { mean = sample(1:100, 1, replace = FALSE) sd = sample(1:100, 1, replace = FALSE) rnorm(100, mean = mean, sd = sd) }) data <- do.call(cbind.data.frame, data) colnames(data) <- paste0("v", formatC(1:3, width = 6, flag = "0")) # Encrypt data #### encrypted_data <- EQUAL_encrypt_data(data = data, public_key_folder = public_key_folder, key_name = "encryption_key.txt") # Decrypt data #### decrypted_data <- EQUAL_decrypt_data(encrypted_data = encrypted_data, private_key_folder = private_key_folder, key_name = "encryption_key.txt")
"Decrypts a file using the private key generated by
EQUAL_encrypt_generate_keys()
function and openssl. This reverses the process followed in
EQUAL_encrypt_file() function."
EQUAL_decrypt_file(encrypted_data, private_key_folder, key_name, data_storage_folder)EQUAL_decrypt_file(encrypted_data, private_key_folder, key_name, data_storage_folder)
encrypted_data |
Encrypted data that must be decrypted |
private_key_folder |
Location of the private key |
key_name |
Name of the private key |
data_storage_folder |
Location to store the decrypted file temporarily |
0 (the decrypted file is saved in the temporary directory)
"This is part of a suite of functions required to allow encrypting and decrypting whole files and encrypting and decrypting columns of data programs to run. This is unlikely to be used as a stand alone function."
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
EQUAL_encrypt_generate_keys()
openssl::aes_cbc_decrypt()
openssl::rsa_decrypt()
library(openssl) # Encryption keys #### test_folder <- tempfile(pattern = "folder_") public_key_folder <- paste0(test_folder, "/public_key_folder") private_key_folder <- paste0(test_folder, "/private_key_folder") dir.create(test_folder) dir.create(public_key_folder) dir.create(private_key_folder) encryption_keys <- EQUAL_encrypt_generate_keys( public_key_folder = public_key_folder, private_key_folder = private_key_folder, key_name = "encryption_key.txt") # Data #### data <- lapply(1:3, function(x) { mean = sample(1:100, 1, replace = FALSE) sd = sample(1:100, 1, replace = FALSE) rnorm(100, mean = mean, sd = sd) }) data <- do.call(cbind.data.frame, data) colnames(data) <- paste0("v", formatC(1:3, width = 6, flag = "0")) test_file <- write.csv(data, paste0(tempdir(), "/test.csv"), row.names = FALSE, na = "") # Encrypt data #### encrypted_data <- EQUAL_encrypt_file(file_name = paste0(tempdir(), "/test.csv"), public_key_folder = public_key_folder, key_name = "encryption_key.txt") data_storage_folder <- paste0(test_folder, "/data_storage_folder") dir.create(data_storage_folder) # Results #### results <- EQUAL_decrypt_file(encrypted_data = encrypted_data, private_key_folder = private_key_folder, key = "encryption_key.txt", data_storage_folder = data_storage_folder)library(openssl) # Encryption keys #### test_folder <- tempfile(pattern = "folder_") public_key_folder <- paste0(test_folder, "/public_key_folder") private_key_folder <- paste0(test_folder, "/private_key_folder") dir.create(test_folder) dir.create(public_key_folder) dir.create(private_key_folder) encryption_keys <- EQUAL_encrypt_generate_keys( public_key_folder = public_key_folder, private_key_folder = private_key_folder, key_name = "encryption_key.txt") # Data #### data <- lapply(1:3, function(x) { mean = sample(1:100, 1, replace = FALSE) sd = sample(1:100, 1, replace = FALSE) rnorm(100, mean = mean, sd = sd) }) data <- do.call(cbind.data.frame, data) colnames(data) <- paste0("v", formatC(1:3, width = 6, flag = "0")) test_file <- write.csv(data, paste0(tempdir(), "/test.csv"), row.names = FALSE, na = "") # Encrypt data #### encrypted_data <- EQUAL_encrypt_file(file_name = paste0(tempdir(), "/test.csv"), public_key_folder = public_key_folder, key_name = "encryption_key.txt") data_storage_folder <- paste0(test_folder, "/data_storage_folder") dir.create(data_storage_folder) # Results #### results <- EQUAL_decrypt_file(encrypted_data = encrypted_data, private_key_folder = private_key_folder, key = "encryption_key.txt", data_storage_folder = data_storage_folder)
"Encrypts data using the public key generated by
EQUAL_encrypt_generate_keys()
function and openssl. This encrypts the file using symmetric AES256
algorithm and encrypts the AES key using the asymmetric RSA algorithm
(4096 bits) and includes padding according to PKCS #1 v2.0 specifications."
EQUAL_encrypt_data(data, public_key_folder, key_name)EQUAL_encrypt_data(data, public_key_folder, key_name)
data |
Data that must be encrypted |
public_key_folder |
Location of the public key |
key_name |
Name of the public key |
iv |
initialisation vector for AES key |
session |
RSA encrypted AES key |
data |
AES encrypted data |
"This is part of a suite of functions required to allow encrypting and decrypting whole files and encrypting and decrypting columns of data programs to run. This is unlikely to be used as a stand alone function."
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
EQUAL_encrypt_generate_keys()
openssl::aes_cbc_encrypt()
openssl::rsa_encrypt()
library(openssl) # Encryption keys #### test_folder <- tempfile(pattern = "folder_") public_key_folder <- paste0(test_folder, "/public_key_folder") private_key_folder <- paste0(test_folder, "/private_key_folder") dir.create(test_folder) dir.create(public_key_folder) dir.create(private_key_folder) encryption_keys <- EQUAL_encrypt_generate_keys( public_key_folder = public_key_folder, private_key_folder = private_key_folder, key_name = "encryption_key.txt") # Data #### data <- lapply(1:3, function(x) { mean = sample(1:100, 1, replace = FALSE) sd = sample(1:100, 1, replace = FALSE) rnorm(100, mean = mean, sd = sd) }) data <- do.call(cbind.data.frame, data) colnames(data) <- paste0("v", formatC(1:3, width = 6, flag = "0")) # Encrypt data #### encrypted_data <- EQUAL_encrypt_data(data = data, public_key_folder = public_key_folder, key_name = "encryption_key.txt")library(openssl) # Encryption keys #### test_folder <- tempfile(pattern = "folder_") public_key_folder <- paste0(test_folder, "/public_key_folder") private_key_folder <- paste0(test_folder, "/private_key_folder") dir.create(test_folder) dir.create(public_key_folder) dir.create(private_key_folder) encryption_keys <- EQUAL_encrypt_generate_keys( public_key_folder = public_key_folder, private_key_folder = private_key_folder, key_name = "encryption_key.txt") # Data #### data <- lapply(1:3, function(x) { mean = sample(1:100, 1, replace = FALSE) sd = sample(1:100, 1, replace = FALSE) rnorm(100, mean = mean, sd = sd) }) data <- do.call(cbind.data.frame, data) colnames(data) <- paste0("v", formatC(1:3, width = 6, flag = "0")) # Encrypt data #### encrypted_data <- EQUAL_encrypt_data(data = data, public_key_folder = public_key_folder, key_name = "encryption_key.txt")
"Encrypts a file using the public key generated by
EQUAL_encrypt_generate_keys()
function and openssl. This encrypts the file using symmetric AES256
algorithm and encrypts the AES key using the asymmetric RSA algorithm
(4096 bits) and includes padding according to PKCS #1 v2.0 specifications."
EQUAL_encrypt_file(file_name, public_key_folder, key_name)EQUAL_encrypt_file(file_name, public_key_folder, key_name)
file_name |
Name of the file that must be encrypted |
public_key_folder |
Location of the public key |
key_name |
Name of the public key |
iv |
initialisation vector for AES key |
session |
RSA encrypted AES key |
data |
AES encrypted data |
"This is part of a suite of functions required to allow encrypting and decrypting whole files and encrypting and decrypting columns of data programs to run. This is unlikely to be used as a stand alone function."
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
EQUAL_encrypt_generate_keys()
openssl::aes_cbc_encrypt()
openssl::rsa_encrypt()
library(openssl) # Encryption keys #### test_folder <- tempfile(pattern = "folder_") public_key_folder <- paste0(test_folder, "/public_key_folder") private_key_folder <- paste0(test_folder, "/private_key_folder") dir.create(test_folder) dir.create(public_key_folder) dir.create(private_key_folder) encryption_keys <- EQUAL_encrypt_generate_keys( public_key_folder = public_key_folder, private_key_folder = private_key_folder, key_name = "encryption_key.txt") # Data #### data <- lapply(1:3, function(x) { mean = sample(1:100, 1, replace = FALSE) sd = sample(1:100, 1, replace = FALSE) rnorm(100, mean = mean, sd = sd) }) data <- do.call(cbind.data.frame, data) colnames(data) <- paste0("v", formatC(1:3, width = 6, flag = "0")) test_file <- write.csv(data, paste0(tempdir(), "/test.csv"), row.names = FALSE, na = "") # Results #### results <- EQUAL_encrypt_file(file_name = paste0(tempdir(), "/test.csv"), public_key_folder = public_key_folder, key_name = "encryption_key.txt")library(openssl) # Encryption keys #### test_folder <- tempfile(pattern = "folder_") public_key_folder <- paste0(test_folder, "/public_key_folder") private_key_folder <- paste0(test_folder, "/private_key_folder") dir.create(test_folder) dir.create(public_key_folder) dir.create(private_key_folder) encryption_keys <- EQUAL_encrypt_generate_keys( public_key_folder = public_key_folder, private_key_folder = private_key_folder, key_name = "encryption_key.txt") # Data #### data <- lapply(1:3, function(x) { mean = sample(1:100, 1, replace = FALSE) sd = sample(1:100, 1, replace = FALSE) rnorm(100, mean = mean, sd = sd) }) data <- do.call(cbind.data.frame, data) colnames(data) <- paste0("v", formatC(1:3, width = 6, flag = "0")) test_file <- write.csv(data, paste0(tempdir(), "/test.csv"), row.names = FALSE, na = "") # Results #### results <- EQUAL_encrypt_file(file_name = paste0(tempdir(), "/test.csv"), public_key_folder = public_key_folder, key_name = "encryption_key.txt")
"Generates the public and private encryption keys using openssl. This uses the asymmetric RSA algorithm 4096 bits for generating the keys. These keys are used for encrypting and decrypting data and files and for inserting and verifying digital signatures."
EQUAL_encrypt_generate_keys(public_key_folder, private_key_folder, key_name)EQUAL_encrypt_generate_keys(public_key_folder, private_key_folder, key_name)
public_key_folder |
Location to store the public key |
private_key_folder |
Location to store the private key |
"
key_name |
Name of the key (a single name for both public and private keys) |
"
private_key |
private key generated by the algorithm |
public_key |
public key generated by the algorithm |
This is part of a suite of functions required to allow encrypting and decrypting whole files and encrypting and decrypting columns of data programs to run. This is unlikely to be used as a stand alone function.
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
test_folder <- tempfile(pattern = "folder_") public_key_folder <- paste0(test_folder, "/public_key_folder") private_key_folder <- paste0(test_folder, "/private_key_folder") dir.create(test_folder) dir.create(public_key_folder) dir.create(private_key_folder) results <- EQUAL_encrypt_generate_keys( public_key_folder = public_key_folder, private_key_folder = private_key_folder, key_name = "encryption_key.txt")test_folder <- tempfile(pattern = "folder_") public_key_folder <- paste0(test_folder, "/public_key_folder") private_key_folder <- paste0(test_folder, "/private_key_folder") dir.create(test_folder) dir.create(public_key_folder) dir.create(private_key_folder) results <- EQUAL_encrypt_generate_keys( public_key_folder = public_key_folder, private_key_folder = private_key_folder, key_name = "encryption_key.txt")
"Insert digital signature for data using the private key generated by
EQUAL_encrypt_generate_keys()
function and openssl. This uses the SHA384 algorithm for the hash
function."
EQUAL_insert_signature_data(data, private_key_folder, key_name)EQUAL_insert_signature_data(data, private_key_folder, key_name)
data |
Data for which signature must be inserted |
private_key_folder |
Location of the private key |
key_name |
Name of the private key |
"
path_to_signed_file |
path to the signed data which is stored in a file |
"
signature |
signature |
"This is part of a suite of functions required to allow encrypting and decrypting whole files and encrypting and decrypting columns of data programs to run. This is unlikely to be used as a stand alone function."
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
EQUAL_encrypt_generate_keys()
openssl::signature_create()
library(openssl) # Encryption keys #### test_folder <- tempfile(pattern = "folder_") public_key_folder <- paste0(test_folder, "/public_key_folder") private_key_folder <- paste0(test_folder, "/private_key_folder") dir.create(test_folder) dir.create(public_key_folder) dir.create(private_key_folder) encryption_keys <- EQUAL_encrypt_generate_keys( public_key_folder = public_key_folder, private_key_folder = private_key_folder, key_name = "encryption_key.txt") # Data #### data <- lapply(1:3, function(x) { mean = sample(1:100, 1, replace = FALSE) sd = sample(1:100, 1, replace = FALSE) rnorm(100, mean = mean, sd = sd) }) data <- do.call(cbind.data.frame, data) colnames(data) <- paste0("v", formatC(1:3, width = 6, flag = "0")) # Encrypt data #### encrypted_data <- EQUAL_encrypt_data(data = data, public_key_folder = public_key_folder, key_name = "encryption_key.txt") # Insert signature #### signature <- EQUAL_insert_signature_data(data = encrypted_data, private_key_folder = private_key_folder, key_name = "encryption_key.txt")library(openssl) # Encryption keys #### test_folder <- tempfile(pattern = "folder_") public_key_folder <- paste0(test_folder, "/public_key_folder") private_key_folder <- paste0(test_folder, "/private_key_folder") dir.create(test_folder) dir.create(public_key_folder) dir.create(private_key_folder) encryption_keys <- EQUAL_encrypt_generate_keys( public_key_folder = public_key_folder, private_key_folder = private_key_folder, key_name = "encryption_key.txt") # Data #### data <- lapply(1:3, function(x) { mean = sample(1:100, 1, replace = FALSE) sd = sample(1:100, 1, replace = FALSE) rnorm(100, mean = mean, sd = sd) }) data <- do.call(cbind.data.frame, data) colnames(data) <- paste0("v", formatC(1:3, width = 6, flag = "0")) # Encrypt data #### encrypted_data <- EQUAL_encrypt_data(data = data, public_key_folder = public_key_folder, key_name = "encryption_key.txt") # Insert signature #### signature <- EQUAL_insert_signature_data(data = encrypted_data, private_key_folder = private_key_folder, key_name = "encryption_key.txt")
"Insert digital signature for a file using the private key generated by
EQUAL_encrypt_generate_keys()
function and openssl. This uses the SHA384 algorithm for the hash
function."
EQUAL_insert_signature_file(file_name, private_key_folder, key_name)EQUAL_insert_signature_file(file_name, private_key_folder, key_name)
file_name |
Name of the file for which signature must be inserted |
private_key_folder |
Location of the private key |
key_name |
Name of the private key |
signature
"This is part of a suite of functions required to allow encrypting and decrypting whole files and encrypting and decrypting columns of data programs to run. This is unlikely to be used as a stand alone function."
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
EQUAL_encrypt_generate_keys()
openssl::signature_create()
openssl::hashing()
library(openssl) # Encryption keys #### test_folder <- tempfile(pattern = "folder_") public_key_folder <- paste0(test_folder, "/public_key_folder") private_key_folder <- paste0(test_folder, "/private_key_folder") dir.create(test_folder) dir.create(public_key_folder) dir.create(private_key_folder) encryption_keys <- EQUAL_encrypt_generate_keys( public_key_folder = public_key_folder, private_key_folder = private_key_folder, key_name = "encryption_key.txt") # Data #### data <- lapply(1:3, function(x) { mean = sample(1:100, 1, replace = FALSE) sd = sample(1:100, 1, replace = FALSE) rnorm(100, mean = mean, sd = sd) }) data <- do.call(cbind.data.frame, data) colnames(data) <- paste0("v", formatC(1:3, width = 6, flag = "0")) test_file <- write.csv(data, paste0(tempdir(), "/test.csv"), row.names = FALSE, na = "") # Encrypt data #### encrypted_data <- EQUAL_encrypt_file(file_name = paste0(tempdir(), "/test.csv"), public_key_folder = public_key_folder, key_name = "encryption_key.txt") data_storage_folder <- paste0(test_folder, "/data_storage_folder") dir.create(data_storage_folder) saveRDS(encrypted_data, paste0(data_storage_folder, "/encrypted_file.RDS")) # Insert signature #### results <- EQUAL_insert_signature_file(file_name = paste0(data_storage_folder, "/encrypted_file.RDS"), private_key_folder = private_key_folder, key_name = "encryption_key.txt")library(openssl) # Encryption keys #### test_folder <- tempfile(pattern = "folder_") public_key_folder <- paste0(test_folder, "/public_key_folder") private_key_folder <- paste0(test_folder, "/private_key_folder") dir.create(test_folder) dir.create(public_key_folder) dir.create(private_key_folder) encryption_keys <- EQUAL_encrypt_generate_keys( public_key_folder = public_key_folder, private_key_folder = private_key_folder, key_name = "encryption_key.txt") # Data #### data <- lapply(1:3, function(x) { mean = sample(1:100, 1, replace = FALSE) sd = sample(1:100, 1, replace = FALSE) rnorm(100, mean = mean, sd = sd) }) data <- do.call(cbind.data.frame, data) colnames(data) <- paste0("v", formatC(1:3, width = 6, flag = "0")) test_file <- write.csv(data, paste0(tempdir(), "/test.csv"), row.names = FALSE, na = "") # Encrypt data #### encrypted_data <- EQUAL_encrypt_file(file_name = paste0(tempdir(), "/test.csv"), public_key_folder = public_key_folder, key_name = "encryption_key.txt") data_storage_folder <- paste0(test_folder, "/data_storage_folder") dir.create(data_storage_folder) saveRDS(encrypted_data, paste0(data_storage_folder, "/encrypted_file.RDS")) # Insert signature #### results <- EQUAL_insert_signature_file(file_name = paste0(data_storage_folder, "/encrypted_file.RDS"), private_key_folder = private_key_folder, key_name = "encryption_key.txt")
"A wrapper function which takes the user input obtained via the Rshiny app,
decrypts the encrypted data file using the
EQUAL_decrypt_data() function after
verifying the digital signature on the encrypted file using the
EQUAL_verify_signature() function."
EQUAL_perform_data_decryption(rv)EQUAL_perform_data_decryption(rv)
rv |
A list supplied by EQUAL-STATS application based on user input |
html_message |
message to the user which includes whether the decryption was successfully performed |
decrypted_file_name |
path to the decrypted file |
"This is part of a suite of functions required to allow encrypting and decrypting whole files and encrypting and decrypting columns of data programs to run. This is unlikely to be used as a stand alone function."
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
EQUAL_decrypt_data()
EQUAL_verify_signature()
library(openssl) # Data #### data <- lapply(1:3, function(x) { mean = sample(1:100, 1, replace = FALSE) sd = sample(1:100, 1, replace = FALSE) rnorm(100, mean = mean, sd = sd) }) data <- do.call(cbind.data.frame, data) colnames(data) <- paste0("v", formatC(1:3, width = 6, flag = "0")) test_file <- write.csv(data, paste0(tempdir(), "/test.csv"), row.names = FALSE, na = "") # Simulate the rv variable #### rv <- {list( file_upload_encrypt = cbind.data.frame(datapath = paste0(tempdir(), "/test.csv")), level_1 = "v000002", level_2 = "", level_3 = "v000003", level_4 = "", level_5 = "v000001", level_6 = "", level_7 = "" )} # Encrypt data #### encrypted_data <- EQUAL_perform_data_encryption(rv, server_address = tempdir()) # Simulate what happens before user input for decryption #### unzipped_files_folder <- paste0(tempfile(), "/unzipped_files") dir.create(unzipped_files_folder, recursive = TRUE) zip::unzip(encrypted_data$encrypted_file_name, exdir = unzipped_files_folder) zip::unzip(paste0(unzipped_files_folder, "/publicly_shareable.zip"), exdir = unzipped_files_folder) zip::unzip(paste0(unzipped_files_folder, "/not_publicly_shareable.zip"), exdir = unzipped_files_folder) # Simulated rv list for decryption rv <- {list( file_upload_decrypt = cbind.data.frame(datapath = paste0(unzipped_files_folder, "/level_7_main_content.zip")), public_keys_upload = cbind.data.frame(datapath = paste0(unzipped_files_folder, "/level_7_public_keys.zip")), private_keys_upload = cbind.data.frame(datapath = paste0(unzipped_files_folder, "/level_7_private_keys.zip")) )} results <- EQUAL_perform_data_decryption(rv)library(openssl) # Data #### data <- lapply(1:3, function(x) { mean = sample(1:100, 1, replace = FALSE) sd = sample(1:100, 1, replace = FALSE) rnorm(100, mean = mean, sd = sd) }) data <- do.call(cbind.data.frame, data) colnames(data) <- paste0("v", formatC(1:3, width = 6, flag = "0")) test_file <- write.csv(data, paste0(tempdir(), "/test.csv"), row.names = FALSE, na = "") # Simulate the rv variable #### rv <- {list( file_upload_encrypt = cbind.data.frame(datapath = paste0(tempdir(), "/test.csv")), level_1 = "v000002", level_2 = "", level_3 = "v000003", level_4 = "", level_5 = "v000001", level_6 = "", level_7 = "" )} # Encrypt data #### encrypted_data <- EQUAL_perform_data_encryption(rv, server_address = tempdir()) # Simulate what happens before user input for decryption #### unzipped_files_folder <- paste0(tempfile(), "/unzipped_files") dir.create(unzipped_files_folder, recursive = TRUE) zip::unzip(encrypted_data$encrypted_file_name, exdir = unzipped_files_folder) zip::unzip(paste0(unzipped_files_folder, "/publicly_shareable.zip"), exdir = unzipped_files_folder) zip::unzip(paste0(unzipped_files_folder, "/not_publicly_shareable.zip"), exdir = unzipped_files_folder) # Simulated rv list for decryption rv <- {list( file_upload_decrypt = cbind.data.frame(datapath = paste0(unzipped_files_folder, "/level_7_main_content.zip")), public_keys_upload = cbind.data.frame(datapath = paste0(unzipped_files_folder, "/level_7_public_keys.zip")), private_keys_upload = cbind.data.frame(datapath = paste0(unzipped_files_folder, "/level_7_private_keys.zip")) )} results <- EQUAL_perform_data_decryption(rv)
"A wrapper function which takes the user input obtained via the Rshiny app,
generates muliple sets of private and public encryption keys corresponding to
the levels of access using the
EQUAL_encrypt_generate_keys()
function, encrypts different columns using encryption keys corresponding to the
level of access using the
EQUAL_encrypt_data() function, and inserts
digital signature on the encrypted data using the
EQUAL_insert_signature_data() function."
EQUAL_perform_data_encryption(rv, server_address = tempdir())EQUAL_perform_data_encryption(rv, server_address = tempdir())
rv |
A list supplied by EQUAL-STATS application based on user input |
server_address |
default address is |
"
html_message |
message to the user which includes whether the encryption was successfully performed |
"
encrypted_file_name |
path to the encrypted file |
"This is part of a suite of functions required to allow encrypting and decrypting whole files and encrypting and decrypting columns of data programs to run. This is unlikely to be used as a stand alone function."
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
EQUAL_encrypt_data()
EQUAL_insert_signature_file()
library(openssl) # Data #### data <- lapply(1:3, function(x) { mean = sample(1:100, 1, replace = FALSE) sd = sample(1:100, 1, replace = FALSE) rnorm(100, mean = mean, sd = sd) }) data <- do.call(cbind.data.frame, data) colnames(data) <- paste0("v", formatC(1:3, width = 6, flag = "0")) test_file <- write.csv(data, paste0(tempdir(), "/test.csv"), row.names = FALSE, na = "") # Simulate the rv variable #### rv <- {list( file_upload_encrypt = cbind.data.frame(datapath = paste0(tempdir(), "/test.csv")), level_1 = "v000002", level_2 = "", level_3 = "v000003", level_4 = "", level_5 = "v000001", level_6 = "", level_7 = "" )} # Encrypt data #### encrypted_data <- EQUAL_perform_data_encryption(rv, server_address = tempdir())library(openssl) # Data #### data <- lapply(1:3, function(x) { mean = sample(1:100, 1, replace = FALSE) sd = sample(1:100, 1, replace = FALSE) rnorm(100, mean = mean, sd = sd) }) data <- do.call(cbind.data.frame, data) colnames(data) <- paste0("v", formatC(1:3, width = 6, flag = "0")) test_file <- write.csv(data, paste0(tempdir(), "/test.csv"), row.names = FALSE, na = "") # Simulate the rv variable #### rv <- {list( file_upload_encrypt = cbind.data.frame(datapath = paste0(tempdir(), "/test.csv")), level_1 = "v000002", level_2 = "", level_3 = "v000003", level_4 = "", level_5 = "v000001", level_6 = "", level_7 = "" )} # Encrypt data #### encrypted_data <- EQUAL_perform_data_encryption(rv, server_address = tempdir())
"A wrapper function which takes the user input obtained via the Rshiny app,
decrypts a file using the
EQUAL_decrypt_file() function after
verifying the digital signature on the encrypted file using the
EQUAL_verify_signature() function."
EQUAL_perform_file_decryption(rv)EQUAL_perform_file_decryption(rv)
rv |
A list supplied by EQUAL-STATS application based on user input |
"
html_message |
message to the user which includes whether the decryption was successfully performed |
"
decrypted_file_path |
path to the decrypted file |
"This is part of a suite of functions required to allow encrypting and decrypting whole files and encrypting and decrypting columns of data programs to run. This is unlikely to be used as a stand alone function."
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
EQUAL_decrypt_file()
EQUAL_verify_signature()
library(openssl) # Data #### data <- lapply(1:3, function(x) { mean = sample(1:100, 1, replace = FALSE) sd = sample(1:100, 1, replace = FALSE) rnorm(100, mean = mean, sd = sd) }) data <- do.call(cbind.data.frame, data) colnames(data) <- paste0("v", formatC(1:3, width = 6, flag = "0")) test_file <- write.csv(data, paste0(tempdir(), "/test.csv"), row.names = FALSE, na = "") # Simulated rv list #### rv <- {list( file_upload_encrypt = cbind.data.frame(datapath = paste0(tempdir(), "/test.csv")) )} # Perform file encryption #### encryption_results <- EQUAL_perform_file_encryption(rv, server_address = tempdir()) # Simulate what happens prior to user input for decryption #### # The encrypted files are unzipped and the individual files are shared unzipped_files_folder <- paste0(tempfile(), "/unzipped_files") dir.create(unzipped_files_folder, recursive = TRUE) zip::unzip(encryption_results$encrypted_file_path, exdir = unzipped_files_folder) zip::unzip(paste0(unzipped_files_folder, "/publicly_shareable.zip"), exdir = unzipped_files_folder) zip::unzip(paste0(unzipped_files_folder, "/not_publicly_shareable.zip"), exdir = unzipped_files_folder) # Simulated rv list for decryption rv <- {list( file_upload_decrypt = cbind.data.frame(datapath = paste0(unzipped_files_folder, "encrypted_file.RDS")), signature_upload = cbind.data.frame(datapath = paste0(unzipped_files_folder, "signature.RDS")), public_keys_upload = cbind.data.frame(datapath = paste0(unzipped_files_folder, "public_encryption_key.txt")), private_keys_upload = cbind.data.frame(datapath = paste0(unzipped_files_folder, "private_encryption_key.txt")) )} results <- EQUAL_perform_file_decryption(rv)library(openssl) # Data #### data <- lapply(1:3, function(x) { mean = sample(1:100, 1, replace = FALSE) sd = sample(1:100, 1, replace = FALSE) rnorm(100, mean = mean, sd = sd) }) data <- do.call(cbind.data.frame, data) colnames(data) <- paste0("v", formatC(1:3, width = 6, flag = "0")) test_file <- write.csv(data, paste0(tempdir(), "/test.csv"), row.names = FALSE, na = "") # Simulated rv list #### rv <- {list( file_upload_encrypt = cbind.data.frame(datapath = paste0(tempdir(), "/test.csv")) )} # Perform file encryption #### encryption_results <- EQUAL_perform_file_encryption(rv, server_address = tempdir()) # Simulate what happens prior to user input for decryption #### # The encrypted files are unzipped and the individual files are shared unzipped_files_folder <- paste0(tempfile(), "/unzipped_files") dir.create(unzipped_files_folder, recursive = TRUE) zip::unzip(encryption_results$encrypted_file_path, exdir = unzipped_files_folder) zip::unzip(paste0(unzipped_files_folder, "/publicly_shareable.zip"), exdir = unzipped_files_folder) zip::unzip(paste0(unzipped_files_folder, "/not_publicly_shareable.zip"), exdir = unzipped_files_folder) # Simulated rv list for decryption rv <- {list( file_upload_decrypt = cbind.data.frame(datapath = paste0(unzipped_files_folder, "encrypted_file.RDS")), signature_upload = cbind.data.frame(datapath = paste0(unzipped_files_folder, "signature.RDS")), public_keys_upload = cbind.data.frame(datapath = paste0(unzipped_files_folder, "public_encryption_key.txt")), private_keys_upload = cbind.data.frame(datapath = paste0(unzipped_files_folder, "private_encryption_key.txt")) )} results <- EQUAL_perform_file_decryption(rv)
"A wrapper function which takes the user input obtained via the Rshiny app,
generates a set of private and public encryption keys using the
EQUAL_encrypt_generate_keys()
function, encrypts a file using the
EQUAL_encrypt_file() function, and inserts
digital signature on the encrypted file using the
EQUAL_insert_signature_file()
function."
EQUAL_perform_file_encryption(rv, server_address = tempdir())EQUAL_perform_file_encryption(rv, server_address = tempdir())
rv |
A list supplied by EQUAL-STATS application based on user input |
server_address |
default address is |
"
html_message |
message to the user which includes whether the encryption was successfully performed |
"
encrypted_file_path |
path to the encrypted file |
"This is part of a suite of functions required to allow encrypting and decrypting whole files and encrypting and decrypting columns of data programs to run. This is unlikely to be used as a stand alone function."
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
EQUAL_encrypt_file()
EQUAL_insert_signature_file()
# Data #### data <- lapply(1:3, function(x) { mean = sample(1:100, 1, replace = FALSE) sd = sample(1:100, 1, replace = FALSE) rnorm(100, mean = mean, sd = sd) }) data <- do.call(cbind.data.frame, data) colnames(data) <- paste0("v", formatC(1:3, width = 6, flag = "0")) test_file <- write.csv(data, paste0(tempdir(), "/test.csv"), row.names = FALSE, na = "") # Simulated rv list #### rv <- {list( file_upload_encrypt = cbind.data.frame(datapath = paste0(tempdir(), "/test.csv")) )} # Perform the test #### results <- EQUAL_perform_file_encryption(rv, server_address = tempdir())# Data #### data <- lapply(1:3, function(x) { mean = sample(1:100, 1, replace = FALSE) sd = sample(1:100, 1, replace = FALSE) rnorm(100, mean = mean, sd = sd) }) data <- do.call(cbind.data.frame, data) colnames(data) <- paste0("v", formatC(1:3, width = 6, flag = "0")) test_file <- write.csv(data, paste0(tempdir(), "/test.csv"), row.names = FALSE, na = "") # Simulated rv list #### rv <- {list( file_upload_encrypt = cbind.data.frame(datapath = paste0(tempdir(), "/test.csv")) )} # Perform the test #### results <- EQUAL_perform_file_encryption(rv, server_address = tempdir())
"Verifies the digital signature on a file using the public key generated by
EQUAL_encrypt_generate_keys()
function, the signature created using
EQUAL_insert_signature_file()
function, and openssl."
EQUAL_verify_signature(file_name, signature, key_name, public_key_folder)EQUAL_verify_signature(file_name, signature, key_name, public_key_folder)
file_name |
Name of the file for which signature must be verified |
"
signature |
Signature created during the
|
"
key_name |
Name of the public key |
public_key_folder |
Location of the public key |
logical indicating whether the signature is verified
"This is part of a suite of functions required to allow encrypting and decrypting whole files and encrypting and decrypting columns of data programs to run. This is unlikely to be used as a stand alone function."
Kurinchi Gurusamy
https://sites.google.com/view/equal-group/home
EQUAL_encrypt_generate_keys()
openssl::signature_verify()
library(openssl) # Encryption keys #### test_folder <- tempfile(pattern = "folder_") public_key_folder <- paste0(test_folder, "/public_key_folder") private_key_folder <- paste0(test_folder, "/private_key_folder") dir.create(test_folder) dir.create(public_key_folder) dir.create(private_key_folder) encryption_keys <- EQUAL_encrypt_generate_keys( public_key_folder = public_key_folder, private_key_folder = private_key_folder, key_name = "encryption_key.txt") # Data #### data <- lapply(1:3, function(x) { mean = sample(1:100, 1, replace = FALSE) sd = sample(1:100, 1, replace = FALSE) rnorm(100, mean = mean, sd = sd) }) data <- do.call(cbind.data.frame, data) colnames(data) <- paste0("v", formatC(1:3, width = 6, flag = "0")) test_file <- write.csv(data, paste0(tempdir(), "/test.csv"), row.names = FALSE, na = "") # Encrypt data #### encrypted_data <- EQUAL_encrypt_file(file_name = paste0(tempdir(), "/test.csv"), public_key_folder = public_key_folder, key_name = "encryption_key.txt") data_storage_folder <- paste0(test_folder, "/data_storage_folder") dir.create(data_storage_folder) saveRDS(encrypted_data, paste0(data_storage_folder, "/encrypted_file.RDS")) # Insert signature #### signature <- EQUAL_insert_signature_file( file_name = paste0(data_storage_folder, "/encrypted_file.RDS"), private_key_folder = private_key_folder, key_name = "encryption_key.txt") # Verify signature #### results <- EQUAL_verify_signature( file_name = paste0(data_storage_folder, "/encrypted_file.RDS"), signature = signature, key_name = "encryption_key.txt", public_key_folder = public_key_folder)library(openssl) # Encryption keys #### test_folder <- tempfile(pattern = "folder_") public_key_folder <- paste0(test_folder, "/public_key_folder") private_key_folder <- paste0(test_folder, "/private_key_folder") dir.create(test_folder) dir.create(public_key_folder) dir.create(private_key_folder) encryption_keys <- EQUAL_encrypt_generate_keys( public_key_folder = public_key_folder, private_key_folder = private_key_folder, key_name = "encryption_key.txt") # Data #### data <- lapply(1:3, function(x) { mean = sample(1:100, 1, replace = FALSE) sd = sample(1:100, 1, replace = FALSE) rnorm(100, mean = mean, sd = sd) }) data <- do.call(cbind.data.frame, data) colnames(data) <- paste0("v", formatC(1:3, width = 6, flag = "0")) test_file <- write.csv(data, paste0(tempdir(), "/test.csv"), row.names = FALSE, na = "") # Encrypt data #### encrypted_data <- EQUAL_encrypt_file(file_name = paste0(tempdir(), "/test.csv"), public_key_folder = public_key_folder, key_name = "encryption_key.txt") data_storage_folder <- paste0(test_folder, "/data_storage_folder") dir.create(data_storage_folder) saveRDS(encrypted_data, paste0(data_storage_folder, "/encrypted_file.RDS")) # Insert signature #### signature <- EQUAL_insert_signature_file( file_name = paste0(data_storage_folder, "/encrypted_file.RDS"), private_key_folder = private_key_folder, key_name = "encryption_key.txt") # Verify signature #### results <- EQUAL_verify_signature( file_name = paste0(data_storage_folder, "/encrypted_file.RDS"), signature = signature, key_name = "encryption_key.txt", public_key_folder = public_key_folder)