After NoNoncense 0.x took the Elixir world by storm, ushering in a new generation of ID generation, one can barely imagine the feverish excitement of the wider ecosystem in the buildup to its 1.0 release. On this fine Christmas Day morning, the long wait is finally over.
NoNoncense 1.0 features:
- Redesigned encrypted nonce API, the key is now passed to
init/1 - Derives keys appropriate for each supported cipher from one base key
- Huge performance improvement for encrypted nonces because key expansion is moved to
init/1, for example 128 bits nonces improved from 2.8M ops/s to 9M on one core - Fully encrypted 96-bits nonces are now possible thanks to the optional Speck cipher support using optional dep SpeckEx, because it has a variant with a block size of 96 bits
- Blowfish replaces 3DES as the default cipher for 64/96 bits nonces (AES is still the default for 128 bits)
- Backwards compatible using the migration guide (in the following sense: although code changes are required, 0.0.x encrypted nonces keep their uniqueness guarantee)
The performance increase with the OTP ciphers is realized by caching the key expansion result, a.k.a. crypto_init reference. That also allows Blowfish to (vastly) outperform 3DES, which is why it is the new default cipher. More details on nonce encryption, including why Speck is a nice upgrade for 96 bits nonces, can be found in the Hex docs.






















