Kotlin compatible.
Fat-jar compatible; can be used in applications such as SpringBoot.
Up-to-date with the awesome Libsodium library (version 1.0.18, 31st June 2019).
Bundled and compiled native libraries so you don't have to.
Ability to use commercially under the terms of the MPLv2.
Great collaborative documentation.
Reactive and fast release cadence.
Bring your own Libsodium native libraries.
Lazysodium for Android and Lazysodium for Java both benefit from the same codebase.
They both have been designed with JNA Direct Mapping for extra speed.
Architected in a composite oriented fashion to allow developers to narrow what operation they want to use at any time - less opportunity for bugs.
Architected in such a way that you can use raw JNA wrapped native C functions whenever you want.
Super easy install.
Completely open source.
A checkmark in the Native
column means that the particular operation has C native functions written for Java and Android. A checkmark in the Lazy
column means that the particular operation has been smartly implemented so that the developer has an effortless experience on Java and Android. A checkmark in the Tests
column means that testing has been performed on that operation for both Java and Android.
Operation | Native | Lazy | Tests |
Auth - | ✔ | ✔ | ✔ |
AEAD - | ✔ | ✔ | ✔ |
Box - | ✔ | ✔ | ✔ |
Diffie-Hellman - | ✔ | ✔ | ✔ |
Ed25519 to Curve25519 - | ✔ | ✔ | ✔ |
GenericHash - | ✔ | ✔ | ✔ |
HMAC-SHA-2 - | ✔ | ✔ | ✔ |
KeyDerivation - | ✔ | ✔ | ✔ |
KeyExchange - | ✔ | ✔ | ✔ |
Padding - several padding functions | ✔ | ✔ | ✔ |
PwHash - | ✔ | ✔ | ✔ |
Random - several randomisation functions | ✔ | ✔ | ✔ |
Scrypt - | ✔ | ✔ | ✔ |
SecretBox - | ✔ | ✔ | ✔ |
SecretStream - | ✔ | ✔ | ✔ |
SHA256/SHA512 - | ✔ | ✔ | ✔ |
ShortHash - | ✔ | ✔ | ✔ |
Sign - | ✔ | ✔ | ✔ |
Stream Ciphers - | ✔ | ✔ | ✔ |
SecureMemory - | ✘ | ✔ | ✔ |
1. The Android variant does not have Salsa20 8 and 12 rounds and no XChaCha20.
2. The Android variant does not have functions of the following form: cryptoPwHashScryptSalsa208*
Please see this question in the FAQ for the reason as to why certain functions are not available on Android.