Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

create a single function in matlab that can both encrypt and decrypt a message u

ID: 3704138 • Letter: C

Question

create a single function in matlab that can both encrypt and decrypt a message using an porta cipher

1. Remove any special characters, punctuation and spaces from the message to be encoded.

2. Convert all lowercase letters to uppercase and use the 26-character alphabet used to create the encryption squares.

3. Generate the encryption/decryption key.

4. Encrypt/decrypt the message and output the result.

. 5. Decrypt the given message.

cannot use find function

must use loops and branching statements

Explanation / Answer

Solution:

The below data illustrates with respect to the given information;

Encryptioin:

function cText = encrypt(pText, key)

    v = vigenere;

    exclude = regexp(pText, '[^a-zA-Z ]');

    pText(exclude) = [];

    key = lower(key) - double('a') + 1;

    key(key < 0) = 27;

    pText = lower(pText) - double('a') + 1;

    pText(pText < 0) = 27;

    keyIndex = mod(0:(numel(pText)-1), numel(key))+1;

    k = key(keyIndex);

    cText = arrayfun(@(m,n) v(m,n), k, pText) - 1;

    cText(cText == 26) = double(' ') - double('a');

    cText = upper(char(cText + double('a')));

decryption:

function pText = decrypt(cText, key)

    v = vigenere;

    key = lower(key) - double('a') + 1;

    key(key < 0) = 27;

    cText = lower(cText) - double('a') + 1;

    cText(cText < 0) = 27;

    keyIndex = mod(0:(numel(cText)-1), numel(key))+1;

    k = key(keyIndex);

    pText = arrayfun(@(m,n) find(v(m,:) == n), k, cText) - 1;

    pText(pText == 26) = double(' ') - double('a');

    pText = upper(char(pText + double('a')));

vigenere

function v = vigenere

    count = 27;

    alpha = 1:count;

   v = arrayfun(@(n) circshift(alpha, [0, -n]), 0:count-1, ...

                 'UniformOutput', false);

    v = reshape([v{:}], count, count);