I am trying to decode an encrypted message

8 views (last 30 days)
Kevin Junior
Kevin Junior on 15 Oct 2013
Commented: Kevin Junior on 19 Oct 2013
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
Kevin Junior
Kevin Junior on 15 Oct 2013
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)

Walter Roberson
Walter Roberson on 15 Oct 2013
What happens if you reshape() a vector into an array, transpose(), and reshape the result into a vector?
  3 Comments
Kevin Junior
Kevin Junior on 19 Oct 2013
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.

Community Treasure Hunt

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

Start Hunting!