TASK Implement MD5 hash function and DES symmetric encryption on micro:bit. To demonstrate your implementation, you should connect the micro:bit through the serial port of a computer and use the following program on the micro:bit that indefinitely handles events from micro:bits’s A and B buttons: 1. When the A button is clicked: the micro:bit reads a string of characters from the serial port (keyboards) and saves it into a local variable, say str, and then displays: i) the MD5 hash value of the string, i.e., MD5(str), ii) its DES cypher text, DES_enc(str), and iii) the key used for that. 2. When the B button is clicked: It decrypts the str’s cypher (that must be saved locally) with the current key and displays the plain text; plain_text=DES_dec(cipher). 3. When pressing A and B simultaneously: In addition to actions 1 and 2 described above (that must be executed only once), the encryption key is reset using part of MD5(str) that fits the key size (Figure 1). This new key will be used from for the next phase (next time A is pressed). MD5(str): on 128bits bit0… bit 127 Part to be used as DES key Figure 1 Initially, you may set the key and str to any arbitrary value of your choice. Alternative to DES: If you are unable to implement DES, you may instead use the very simplified crypto algorithm given below. If you decide to use this algorithm instead of DES then the maximum you may obtain for the “Encryption/decryption implementation” The key generation process remains unchanged expect that the whole 128-bits is used and not only part of it. After generating the key, calculate the cipher as: Cipher= str XOR key_part, where XOR stands for the “bitwise exclusive OR” operator ( “|” in C), and key_part is the first part of the key of the same size as str. E.g., if str is 4 bytes, then just take the first 4 bytes of the key. If str is longer than 128 bits, split it into blocks of 128 and encrypt each block with the same (whole) key and append. For the latest block, use part of the key proportionally to its size. Deliverables The deliverables of this part of the assessment include: • A short video (up to 4 minute) that illustrates the running of the program described above testing your implementation. Briefly demonstrate what happens when pressing the buttons. In particular, demonstrate that after pressing A and B simultaneously the new key is used in next phase. Please use a common cross-platform video format for this (e.g., MP4). • All source code files should be provided, clearly organised and commented. • A README document that describes your software and how to run it (maximum 400 words). Please use standard formats (.doc, text, or .pdf).