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: 3704692 • Letter: C

Question

create a single function in matlab that can both encrypt and decrypt a message using beaufort cipher. The function must use loops and branching statements. It also may not use the find function.

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.

Explanation / Answer

Solution:

code:

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);

I hope this helps if you find any problem. Please comment below. Don't forget to give a thumbs up if you liked it. :)