How Can I Optimize My MATLAB Cipher Program?

  • Thread starter Thread starter G'mo
  • Start date Start date
  • Tags Tags
    Program
AI Thread Summary
The discussion revolves around a ciphering program that transforms input sentences into a coded format by replacing letters with other letters based on a specific mapping. The program converts the input to uppercase, cleans it of unwanted characters, and then iterates through each character to apply the ciphering rules. However, the current implementation is lengthy and includes multiple conditional statements that could be optimized. Suggestions for improvement include vectorizing the code by creating an array of destination values, which would simplify the mapping process. Concerns were raised about missing characters in the mapping, as well as potential issues with multiple characters mapping to the same output, making decryption impossible. The original intention of the program appears to be to create a unique cipher, but the current approach may not align with that goal due to inconsistencies in the mapping logic.
G'mo
Messages
3
Reaction score
0
I have the following ciphering program.

a1 = input('Please enter a sentence: ','s');
x = upper(a1); % Change the text to uppercase
p = CleanStr(x) % Call a function CleanStr to remove
% all unwanted characters
double(p); % String to ASCII numbers

for i = 1:numel(p) % Iterate as long as there are characters
% in the string

if (p(i) == 65) % Find all ASCII codes which are less
% than 88 and not spaces
p(i) = 83; % Replace each letter with the letter
% 3 places along in the alphabet

elseif (p(i) == 66)
p(i) = 81;
elseif p(i) == 67;
p(i) = 85;
elseif p(i) == 68
p(i) = 89;
elseif (p(i) == 69) | (p(i) == 89)
p(i) = 78;
elseif (p(i) == 70) | (p(i) == 75)
p(i) = 87
elseif p(i) == 71
p(i) = 69;
elseif (p(i) == 73 ) | (p(i) == 81) | (p(i) == 83)
p(i) = 72;
elseif p(i) == 74
p(i) = 71;
elseif p(i) == 76
p(i) = 84;
elseif p(i) == 77
p(i) = 68;
elseif p(i) == 78
p(i) = 65;
elseif p(i) == 79
p(i) = 88;
elseif p(i) == 80
p(i) = 70;
elseif p(i) == 84
p(i) = 77;
elseif p(i) == 85
p(i) = 66;
elseif p(i) == 86
p(i) = 89;
elseif p(i) == 87
p(i) = 80;
elseif p(i) == 88
p(i) = 76;
elseif p(i) == 90
p(i) = 73;
else
p(i) = 32;
end
end
disp(['The enciphired message is: ',num2str(p)]);

Is there a way of making this program any shorter? ( Maybe vectorising). The program ciphers as follows: (ABCDEFGHIJKLMNOPQRSTUVWXYZ ----> SQUYNWEZHGWTDAXFHRHMBZPLNI).

Thank you for your help guys.
 
Technology news on Phys.org
Yes, just make an array with the destination values SQUY...LNI and look at the appropriate element in that list. Something like dest(p(i) - 65), hwere dest(0) = 'S', dest(1) = 'Q', etc.
 
You are missing characters in your mapping. Sort this second string (SQUYNWEZHGWTDAXFHRHMBZPLNI) to see a few problems:

AB DEFG HHH I LM NN PQRSTU X WW Y ZZ

EDIT: Well, maybe this is intentional. Code like this:

elseif (p(i) == 73 ) | (p(i) == 81) | (p(i) == 83)
p(i) = 72;

...will map three different characters to the same one: H. It makes complete decyphering impossible, but you may have some reason...
 
Last edited:
The code has to work with any radomly generated alphabets & deciphering should also be possible. So far, it is indeed impossible for me to decipher the messages.
 
I also note some comments in your code that say "Find all ASCII codes which are less than 88 and not spaces. Replace each letter with the letter 3 places along in the alphabet." This means mapping ABC...W to DEF...Z but you are implementing an entirely different mapping.
 
Thread 'Star maps using Blender'
Blender just recently dropped a new version, 4.5(with 5.0 on the horizon), and within it was a new feature for which I immediately thought of a use for. The new feature was a .csv importer for Geometry nodes. Geometry nodes are a method of modelling that uses a node tree to create 3D models which offers more flexibility than straight modeling does. The .csv importer node allows you to bring in a .csv file and use the data in it to control aspects of your model. So for example, if you...
I tried a web search "the loss of programming ", and found an article saying that all aspects of writing, developing, and testing software programs will one day all be handled through artificial intelligence. One must wonder then, who is responsible. WHO is responsible for any problems, bugs, deficiencies, or whatever malfunctions which the programs make their users endure? Things may work wrong however the "wrong" happens. AI needs to fix the problems for the users. Any way to...

Similar threads

Replies
3
Views
2K
Replies
2
Views
3K
Replies
36
Views
3K
Replies
2
Views
1K
Replies
9
Views
3K
Replies
12
Views
2K
Replies
6
Views
3K
Back
Top