talkCipher is an android based chat application offering end-to-end encryption of messages to the user based on his/her choice of encryption methods, assuring ultimate safety, with absolutely lovable UI for best experience.
- Splash Screen
- User Authentication through mobile number OTP Verification.
- One to one chat facility.
- Panel to seek list of users with username, profile picture and last message of conversation(if any) displayed.
- Panel to chat, with interface properties similar to Whatsapp, displaying
- two different chat bubbles to differentiate between sender and reciever.
- time of message sent is also displayed.
- End to end encryption of chats.
- Database management to store chats(in Encrypted form).
- Panel to provide choice amongst different Encryption methods to secure each message.
- Panel to upload and update Profile Picture from device.
- Offline data persistency enabled.
- User Authentication
This project uses FirebaseAuth package for authentication using mobile number and OTP Verification. SignUp page is used to authenticate the details and push it to the database user node if verified. SignIn page matches the input details with that in database and provide access to account after OTP Verification if such user exists. - Chat & Cipher Fragment
The code has been written with a try of using best practises, hence the different tabs mentioned are implemented using tab layout with each tab details using Fragments. The details of previous chats are displayed in RecyclerView. - Load Images using Picasso
Picasso provides a hassle-free image loading facility to your application. This project uses this to display profile pictures. Click here to read more about Picasso. - AES, DES and RSA Implementation for encryption
- AES: Advanced Encryption Standard aka Rijndael is a symmetric key-based approach of data encryption.
This application uses AES class of Java for implentation of AES Algorithm.
- DES: Digital Encryption Standard is also a symmetric-key block cipher algorithm used for data encryption. It accepts the plain text in 64-bit blocks and changes it to the cipher text that uses the 64-bit keys to encrypt the data. It uses same key for encryption and decryption.
The algorithm functionalities are achieved using DES class of Java.
- RSA: It is an asymmetric encryption algorithm, that is, two different keys are responsible for encryption and decryption of data.
The algorithm functionalities are achieved using RSA class of Java.
- AES: Advanced Encryption Standard aka Rijndael is a symmetric key-based approach of data encryption.
This application uses AES class of Java for implentation of AES Algorithm.
- Update Profile Picture
FirebaseStorage is used to store the profile pictures with offline capabilities enabled thus reducing the rendering time of pictures.
- Android Studio as the development environment.
- Android Documentation.
- Firebase for authentication, storage and database.
- Circular Image View
- Picasso.
- Chat bubbles layout.