In this project we aim to create a dynamic encryption algorithm using neural networks.
Current encryption algorithms (even public key crypto algorithms) face a problem where the key is static in nature and needs to be changed manually in case of an attack. This can be changed with the help of neural networks. We aim to provide a solution where the neural network architecture and the weight matrices in it will act as the key.
Thus our architecture not only makes it a 2 step process to get the key, but also makes it extremely hard to find out the key used.
We will primarily be working with CNTK. Although the library used here is for demonsration purpose only. The implementation can be done in any library like Keras or TensorFlow
It is recommended to use Anaconda python as the default python environment as it solves a lot of dependency problems associated with the network.