Cluj-Napoca 004074670833 email@example.com
1. EMAIL ENCRYPTION ON ANDROID USING
Developed Application: K-9 Mail with Encryption
K-9 Mail is a Free/Open-source Android mail application. It is a comprehensive
email client that allows sending and receiving emails from one or multiple accounts. K-9
Mail with Encryption allows sending and receiving email securely by encrypting the
contents. The application was developed using Java programming language on Android
Studio. An overview of the application system is presented in the following figure:
For encrypting the message, a symmetric key is generated which is then encrypted
using the RSA algorithm with the public key of the recipient that was previously stored
in a preference file. If there is no key for the recipient, the message will be signed using
the private key of the sender and the public key of the sender will be appended to the
The message will end up structured at the other end as it can be seen in the
following screenshot, for being able to extract the information needed for decrypting it:
The decrypted message will be displayed appended when the message is open for
reading if the signature was successfully validated (if it was signed):
For starting a new mail in K-9 the compose icon can be tapped from any
screen. On the screen for email composition, the recipient can be added by manually
typing it or pressing and choosing one from the address book. For sending an
encrypted mail, the box for encryption must be checked: . For sending a signed
mail, the box for signing must be checked: . After pressing for sending,
the public key of the recipient is retrieved from the preference file and the steps
described above are applied to the message.
When opening the encrypted or signed message, the signature is being validated.
A successful validation leads to the extraction of the encrypted symmetric key and its
decryption using the recipient’s private key. The last step is to decrypt the message with
the decrypted symmetric key and the original message is appended at the end of the
This process prevents anyone that is eavesdropping on your conversation from
seeing the message in a readable format. When using a signature, the authenticity of
the message can be established as the private key of the sender is used for signing and
the public key of the sender is used for validating it.
Use Case Specification: Borrow
This use case describes how a subscriber of a library borrows books
The use case begins when a user wants to borrow books.
1. The user selects to borrow a book
2. The system displays the list of available books and provides the option for searching a
3. The user selects a book or searches for it manually
4. The user confirms his choice and proceeds with the request or goes back to borrowing other
5. The system updates the list of available books and registers the reservation
6. The system displays the confirmation number, the borrowed books and the date of return
7. The use case terminates
A1. Search manually
In step 3, if the user searches for a book manually, the system will display the list of books
that contain the string that has been typed, together with the status: borrowed or available.
A2. Maximum 3 books
In step 5, if the user has already three books that he wants to borrow, he is prompted with a
message and cannot select anymore books. He can cancel the request and the use case terminates or
proceeds with the request and the basic flow goes further.
The subscriber has logged in to the system
After a successful request, a new registration is created and the list of available books is updated,
otherwise, there is no change to the database.
Use Case Specification: Return
This use case describes how a user returns books
The use case begins when a user wants to return books.
1. The user selects to return a book and introduces the user ID
2. The system displays the list of books that are currently borrowed by the given user
3. The user selects the books to be returned
4. The system updates the list of available books
5. The use case terminates
The user has logged in to the system and is of type librarian
After a successful return, the list of available books is updated, otherwise, there is no change to
The system must handle 5 concurrent requests.
A library offers its subscribers books that can be borrowed. The library has many
terminals where the subscribers can borrow books. In order to use the terminal, the
subscriber must introduce his/her library ID.
After a successful identification, the subscriber sees all the available books:
and may borrow one or more books (no more than three):
After the loan is completed, all the other subscribers using the terminals see the
updated list of available books.
The subscriber can also search for a book, by typing a substring from the title. The
terminal will display all the books from the library containing that substring together
with their status (borrowed or available).
For returning books there is only one terminal. In order to return a book the
subscriber introduces his/her library ID and the book ID. After a successful return the list
of available books is automatically updated.
This application was developed in Microsoft Visual Studio using C# programming
language and it uses the following concepts:
- client/server communication: TCP/IP
- XML documents
- persistence: binary files