Hello All ๐,
I wanted to quickly mention how the application works. Both C# edition and Python edition work the same way. It uses Fernet Encryption which is an advanced encryption method used to encrypt strings of data. It requires a key in order to encrypt data. However, since we want the user to enter their own master password, we do not generate a key, but we hash the password with a salt in order to generate a key.
The salt is stored in a file called preference.en
as a dictionary of a JSON. It also contains a hash of the password so that we can verify that the password entered for login is correct. All hashing is done with SHA256.
A separate database.en
file stores the passwords. It follows a structure as follows:
In order to decrypt it, we follow the following procedure:
Regardless of whether C# or Python, the setup goes as above. Therefore data from one edition is cross compatible with the other.
For the Fernet encryption, in Python edition the Cryptgraphy.IO library is used. On the C# application, this is done using Fernet.net library by thangchung.
Cheers ๐
External Links