Firstly I'm not a crypto expert, however I know how to use algorithms that other people have defined before in practical usages, that is, as long as they live up to their promises.
The thing is that I need certain utilities:
- Generate Public/Private Key pair of x length, get them as binary; and be able to process content with it.
- Some hashing algorithm that consumes a lot of memory and takes its time; I don't need speed, I need safety. (I'm pretty sure they'll use dumb passwords)
- An symmetric encryption algorithm that generates ciphertext based on a password (hash) that must be quite strong as well.
My current answers have been:
- OpenSSL RSA algorithms.
- Scrypt (thinking about changing to argon2 due to great documentation and wrappers)
- OpenSSL AES CBC
But then you go here and there on the internet and they say that, scrypt is broken, use bcrypt, no argon2 https://github.com/P-H-C/phc-winner-argon2
is the new thing, OpenSSL has security bugs, better use LibreSSL, no use libsodium. etc... etc...
So what'd the best options be?... I need to secure highly sensitive data.
Also I'll probably be using Node.js wrappers because I need results fast, as I need to make a demonstration.