Bindings to libsodium: a modern, easy-to-use software library for encryption, decryption, signatures, password hashing and more. Sodium uses curve25519, a state-of-the-art Diffie-Hellman function by Daniel Bernstein, which has become very popular after it was discovered that the NSA had backdoored Dual EC DRBG.
About the R package:
- Vignette: Introduction to Sodium for R
- Vignette: How does cryptography work
Other resources:
# Generate keypair:
key <- keygen()
pub <- pubkey(key)
# Encrypt message with pubkey
msg <- serialize(iris, NULL)
ciphertext <- simple_encrypt(msg, pub)
# Decrypt message with private key
out <- simple_decrypt(ciphertext, key)
Binary packages for OS-X or Windows can be installed directly from CRAN:
install.packages("sodium")
Installation from source on Linux or OSX requires libsodium
. On Ubuntu 14.04 or lower use libsodium-dev from Launchpad:
sudo add-apt-repository -y ppa:chris-lea/libsodium
sudo apt-get update -q
sudo apt-get install -y libsodium-dev
More recent Debian or Ubuntu install libsodium-dev directly from Universe:
sudo apt-get install -y libsodium-dev
On Fedora we need libsodium-devel:
sudo yum install libsodium-devel
On CentOS / RHEL we install libsodium-devel via EPEL:
sudo yum install epel-release
sudo yum install libsodium-devel
On OS-X use libsodium from Homebrew:
brew install libsodium
On Solaris 10 we can have libsodium_dev from OpenCSW:
pkgadd -d http://get.opencsw.org/now
/opt/csw/bin/pkgutil -U
/opt/csw/bin/pkgutil -y -i libsodium_dev
/usr/sbin/pkgchk -L CSWlibsodium-dev # list files