I am trying to decode an encrypted message

Here are the files that I have to use.
% First file
encodedString = 'aasfu aic talputte balde';
encryptionKey = [6,7];
% encryptionKey is an array that stores the m-value used in
% perfectMShuffle() function and the number of shuffles performed.
% write the rest of the code, which has to be done in two parts:
% 1) determine the cycle length of the m-shuffle, i.e. how many shuffles
% (including the first one) are needed to return the string to its original
% order
% 2) complete the shuffle cycle on the encoded string to reveal the secret
% message
% Second file
function outString = perfectMShuffle(inString,m)
% This function shuffles the characters in the inString by picking 1st,
% m+1st, 2m+1st characters till it reaches the end, then picking 2nd, m+2nd
% 2m+2nd etc.
% Examples:
% perfectMShuffle('abcdef',3) -> 'adbecf'
% perfectMShuffle('abcdef',2) -> 'acebdf
So how do I approach this problem?

2 Comments

This looks like a homework question. For obvious reasons we will not solve this for you, otherwise you would be forced to cheat, when you submit it.
The standard procedure is that you show us, what you have tried so far and ask a specific question.
how do I implement the outstring function here is what I have
function outString = perfectMshuffle(inString,m)
n = length(inString);
y = zeros(n,1);
m = n/2;
for k = 1:m
y(2*k-1) = inString(k);
y(2*k) = inString(k+m);
end

Sign in to comment.

Answers (1)

What happens if you reshape() a vector into an array, transpose(), and reshape the result into a vector?

3 Comments

Thanks for the help I just did it,
n = length(inString);
X = n/m;
outString = reshape(reshape(inString,X,m)',n,1);
so how do I decode the encrypted message??
Encode [1:length(inString)] using your encoding method. Then index the encrypted string by the array that resulted from that encoding.
Thanks for the heads up again now I wrote the full program am almost there i just dont know where to add the encode[(1:length(instring)]. Here is my code
encodedString = 'aasfu aic talputte balde';
encryptionKey = [6,7];
% encryptionKey is an array that stores the m-value used in
% perfectMShuffle() function and the number of shuffles performed.
N = 1000;
cl = zeros(N/2,1);
for n = 2:2:N
ordered = [1,n]';
encodedString = ordered;
encodedString = perfectMShuffle(encodedString,encryptionKey);
counter = 1;
while any(encodedString - ordered)
encodedString = perfectMShuffle(encodedString,encryptionKey);
counter = counter + 1;
end
cl(n/2) = counter;
end

Sign in to comment.

Categories

Find more on MATLAB in Help Center and File Exchange

Asked:

on 15 Oct 2013

Commented:

on 19 Oct 2013

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!