Caesar cipher matlab code

17 Ansichten (letzte 30 Tage)
Md. Atiqur Rahman
Md. Atiqur Rahman am 25 Aug. 2022
Kommentiert: Walter Roberson am 31 Aug. 2022
Can anyone write a very basic code for caesar cipher that shifts input characters by 5 place?
  1 Kommentar
James Tursa
James Tursa am 25 Aug. 2022
What have you done so far? What specific problems are you having with your code?

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Md. Atiqur Rahman
Md. Atiqur Rahman am 27 Aug. 2022
Bearbeitet: Walter Roberson am 28 Aug. 2022
%% To whom it may concern
Plaintext= input('Plaintext: ','s')
Shift= input('Shift: ')
Output = Plaintext+Shift;
r=Output-26;
for i = 1:length(Plaintext)
if Output(i) <= 90
Output(i) = char(Output(i));
else
Output(i) = char(r(i));
end
end
fprintf('Ciphertext: ','s')
disp(char(Output))
  10 Kommentare
Md. Atiqur Rahman
Md. Atiqur Rahman am 31 Aug. 2022
I think I've done it better 😎
Walter Roberson
Walter Roberson am 31 Aug. 2022
Output(i) = char(Output(i));
Why are you doing that redundant operation? Yes, you convert to char but you store it in the same array so it would convert back to the same data type.
Output(Output<=58)=32;
Why are you mixing logical indexing of the entire array inside a loop?

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Walter Roberson
Walter Roberson am 25 Aug. 2022
cc5('HELLO')
ans = 'MJQQT'
cc5('ABCXYZ')
ans = 'FGHCDE'
function out = cc5(in)
TT('A':'Z') = ['F':'Z', 'A':'E'];
out = TT(in);
end
  2 Kommentare
Md. Atiqur Rahman
Md. Atiqur Rahman am 27 Aug. 2022
Bearbeitet: Walter Roberson am 27 Aug. 2022
Plaintext= input('Plaintext: ','s')
Shift= input('Shift: ')
if Plaintext+Shift <= 90
Ciphertext = (char(Plaintext+Shift))
else
Ciphertext = (char(Plaintext+Shift-26))
end
%Can you fix this?
Walter Roberson
Walter Roberson am 27 Aug. 2022
Your Plaintext is a vector of characters. Plaintext+Shift <= 90 would be a vector. When you if a vector, the result is considered true only if all of the values in the vector are non-zero. So your Plaintext+Shift <= 90 test would be true only if all of the characters where no more than 'U'
You should investigate logical indexing.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Encryption / Cryptography finden Sie in Help Center und File Exchange

Produkte


Version

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by