User-defined function to decrypt/encrypt messages (matlab)

  • Thread starter gfd43tg
  • Start date
  • #1
gfd43tg
Gold Member
953
49

Homework Statement


I am working on Problem #2 in the attached PDF


Homework Equations





The Attempt at a Solution


I am trying to understand what they are saying in (b) as far as creating the double array. Does that mean I concatenate strIn with keyL? Also, how do I remove the last few characters in keyL so that numel(keyL) == numel(strIn). I'm having a hard time getting started because I don't really understand what they are saying in the question as far as what to do.

Here is what I have so far, it's far from complete but I don't know if I should use a while statement.

Code:
function strOut = Convert(strIn,key,mode)
keyL = [key key];
if mode == 1
    while (numel(keyL) >= numel(strIn)) == 1
        numel(keyL) == numel(strIn)
        for i = 1:numel(keyL)
 

Attachments

Answers and Replies

  • #2
402
120
Double is a variable type http://en.wikipedia.org/wiki/Double-precision_floating-point_format
The issue with the encoding scheme that they have defined comes down to the fact that chars are generally an 8 bit value so they only give you 0-256 (for unsigned)
So when you add 2 char's values together they can wrap around, While this should still work regardless, generally converting the variable to a type that has the proper range is preferable.

Remember that char's while they repersent characters are at a base level still just numbers :)
So what they want you do to for example say the first letter of the array to encode is 'A' that is ascii 65 if then the key's first letter is 'm' (ascii 109) you'd add them together and get 174 which you'd plop into the double array.

as far as how you get kelL to be the same length as strIn there are a number of ways to do this which you should figure out on your own :)
But let me give you a couple hints.
You're right that you'll need a loop of some fashion. For loops generally I go by:
If you know exactly how many times the loop needs to run use a for loop
if you know the loop needs to run at least 1 or more times usually a do while loop
if you know the loop needs to run 0 or more times usually a while loop.
So which case would this fall under??

Also loop up exactly what the mod function does it can be quite helpful in cycling through things :)
 
  • #3
gfd43tg
Gold Member
953
49
Here is what I have so far
Code:
function strOut = Convert(strIn,key,mode)
key = 'key';
strIn = 'abcdefgh';
keyL = repmat(key,1,ceil(numel(strin)/numel(key)));
keyL = keyL(1:length(strIn));
doubletrouble = double(keyL) + double(strIn);
if nargin == 2
    for i = 1:length(strIn)
        doubletrouble(i) = doubletrouble(i) - mod(i,10);
    end
end
if nargin == 3
    if strcmpi(mode,'encrypt')
        for i = 1:length(strIn)
            doubletrouble(i) = doubletrouble(i) + mod(i,10);
        end
        strOut = char(doubletrouble);
    end
end
strOut = char(doubletrouble);
if strcmpi(doubletrouble,'decrypt')
    for i = 1:length(strIn)
        doubletrouble(i) = doubletrouble(i) - mod(i,10);
    end
    strOut = char(doubletrouble);
end
end
It still isn't working though.
 
  • #4
gfd43tg
Gold Member
953
49
solved, disregard
 

Related Threads on User-defined function to decrypt/encrypt messages (matlab)

  • Last Post
Replies
8
Views
6K
  • Last Post
Replies
3
Views
2K
  • Last Post
Replies
5
Views
2K
Replies
11
Views
1K
Replies
1
Views
4K
Replies
25
Views
4K
  • Last Post
Replies
16
Views
3K
Replies
2
Views
1K
Replies
1
Views
2K
Top