This is an implementation of digital envelope. AES is used to encrypt the file which is compression of a whole directory, and use ECC to encrypt the AES key, to ensure its secrecy; For the integrity guarantee, ECDSA signed HASH vaule is used, in which SHA-256 is used as the HASH function.
- CRYPTO (pycrypto) Library, provides a great amount of cipher, hash, random and pubkey algorithms, in this project, AES in Crypto.cipher is used.
- ECC Library, includes functions like getting Ellipse Curves, generating EC keys and sophiscated algorithms like ECC, ECDSA and so on.
- HASHLIB Library, a built-in Python lib, contains fast and easy hash implementations.
- ZIPFILE Library, a built-in Python lib, is used to compress and decompress files.
- TKINTER LIbrary, a well-known GUI lib.
Python Version 2.7
Default keys (Recv_ECC_Pubkey and Send_ECDSA_Privkey) are written in the code lines, which is used for package generating, and keys are certainly replacable by clicking the button on the GUI.
By clicking on the "Choose dir to proceed" button, a whole directory is chosen for subsequent processing.
Following the procedure declared in code lines, the "Execute" button is the core function of this project. This function takes a dir as input,
by creating temp files like .AES .compressed, and finally output a .package file.
Default keys (Recv_ECC_Privkey and Send_ECDSA_Pubkey) are written in the code lines, which is used for package generating, and keys are certainly replacable by clicking the button on the GUI.
By clicking on the "Select package file" button, a package file which generated by sender(using same kit) is chosen for subsequent processing.
Following the procedure declared in code lines, the "Execute" button is the core function of this project. This function takes a package as input,
by creating temp files like .unpack, finally output a .zip file.
In the ECKey Generator dir are some sample Key file that stores Public key (.PUK) and Private key (.PRK) seprately, a key pair is noted by the same serial number.
The python program contains functions that generate new key pair with assigned key length.
Proto of the function is def newKey(keylen, writeTofile=True), which write keys to file defaultly.
In the scratch dir are 4 demostrations of how basic functions in lib are used, giving a crash course to understand the unclear lines in this project.
Add Kit Select Module for Sender and Reciever to negotiate for a common kit.
Add Verification to check the imported keys' anthentication.