Applied Cryptography Final Project provides a web application which allows system users to communicate with additional security. This project contains:
- Flask web application enabled with https
- User of the system exchange messages using symmetric encryption (shared key between user and server) and asymmetric encryption (server's public key) with AES-CBC and RSA
- Message integrity validated using digital signatures with SHA256 and PSS
- Users are authenticated using Bcrypt to validate salted hashed passwords
- Storage of users and messages available in Sqlite
| Encrypted Flow | Decrypted Flow |
|---|---|
![]() |
![]() |
* The private keys of the server and user are securely stored.
* Security mechanisms (AES, CBC, SHA256, and RSA) continue to remain uncompromised.
- Setup the project from the command line:
sudo pip install virtualenv
mkdir crypto_sms
cd crypto_sms
virtualenv venv
. venv/bin/activate
pip install Flask
sudo apt-get install python-dev
pip install pyOpenSSL
pip install bcrypt
pip install PyCrypto
export FLASK_APP=sms_encrypt.py
- Start the program:
cd <to directory of the project>
python sms_encrypt.py
- From a browser:
Enter URL: https://127.0.0.1:5001
Login with user/password: one/1pass
Thanks!


