Lions and Tigers and Crypto, Oh My!
Last updated on June 14, 2025
Looking for cryptographic libraries for C# can be a challenge sometimes. I recently went round and round with every implementation of argon2id and scrypt on NuGet and what I could find on Github, and I kept coming up short.
Not in the fact that the libraries or wrappers didn't exist, but that they all did something wrong. You see, OWASP publishes recommendations for handling authentication securely on the web, and they are very specific about the algorithms they recommend and the parameters that should be used.
The problem I kept running into was hardcoded settings for many of these parameters. It was maddening. I'm not going to name names or criticize, but if you are going to release cryptographic libraries, you should at least verify that your users can use them and follow the latest professional guidance regarding their use. If something needs parallelism, don't hide that knob. If something needs a longer hash or salt, don't hardcode it. I know library authors think they are being helpful, but times change and security needs evolve.
Anyway, I had enough- I got comfy and decided to do the 4 platform quadfecta (Windows, Linux, and MacOS x2). I built optimized versions of argon2, scrypt, chacha20, and poly1305. Argon2 and Scrypt were the original optimized reference codebases, while chacha20 and poly1305 came straight from Google's BoringSSL. With quad-platform native binaries in hand, I set out to wrap them all up neatly for others to use via NuGet. And it worked like a charm- frictionless crypto with small shared libraries (<20KB each) each with their own user-friendly C# front-ends. The way they are built ensures that anyone using them won't even know they are external .dll files (or .so or .dylib) because it's all handled behind the scenes.
Then I sat down and wrote an avx2 optimized Blake2b with streaming support in native C#. Why? I had to write something myself, lol.
So without further ado, here's the new lineup (tests are all on github, packages are all up on Nuget):
nebulae.dotBlake2b: Github / NuGet
nebulae.dotArgon2: Github / NuGet
nebulae.dotScrypt: Github / NuGet
nebulae.dotChaCha20: Github / NuGet
nebulae.dotPoly1305: Github / NuGet
No BS filler here; no glory or fame. I just wanted people to have the fastest and most configurable cryptographic libraries when coding for .NET Core in C#.
Happy coding!
-Padawan, 2025