Today we use cryptography in almost everywhere. From surfing the web over https, to working remotely over ssh. Although most developers don't need to implement cryptography primitives, the knowledge and understanding of these building block allows them to better deploy them in their application. In modern crypto we have all the building block to develop secure application. However, we see instances of insecure code everywhere. Most of these vulnerabilities are not because of theoretic shortcomings, but due to bad implementation or a flawed protocol design. Cryptography is a delicate art where nuances matter, and failure to comprehend the subtleties of these building blocks leads to critical vulnerabilities. To add insult to injury most of the resources available are either outdated or wrong, and inarguably, using bad crypto more dangerous than not using it.
- Python 3
- Jupyter Notebook
- cryptography
You need to have pip installed. Optinally you can use virtualenv for an isolated installation of libraries instead of globally.
$ pip3 install jupyter
$ pip3 install cryptography
Alternatively, if you have the conda package manager, you can run:
$ conda create -n crypto python=3.6 jupyter cryptography
$ source activate cryptography
$ jupyter notebook