i know that it is related to the programming a bit more, but i think mathematical issue as well, for instance there is given my code
function result=affine_cipher_encode(a,b,m,s)
%a and b are prime numbers
% m=total number of letters in english language(26)
%s-input string
% result=output after affine chiper algorithm
n=length(s);% declare length of string
letter=['a':'z'];% declare array of letters with following index 'a'=1,b='2',..'z'=26;
result=zeros(size(s));
for ii=1:n
if ~isspace(s(ii))
index=find(letter==s(ii));
c=mod((a*index+b),m);
converted_letter=letter(c);
result(ii)=converted_letter;
else
continue;
end
end
result=char(result);
end
which uses Affine cipher function $c=a*p+b\pmod m$ this line works successfully, there is my example
a=5;
b=7;
m=26;
s='wbgbuwyqbbhtynhkkzgyqbrhtykb';
result=affine_cipher_encode(a,b,m,s)
result =
rqpqhrbnqqucbyujjgpbnqsucbjq
after that, i decided to write code for decoding given result , for that i use multiplicative inverse of $a$ modulo $m$, so i wrote following code
function decode=affine_cipher_decode(a,b,m,result)
%a and b are prime numbers
% m=total number of letters in english language(26)
%s-input string
% decodet=output after affine chiper decoding algorithm
n=length(result);% declare length of string
letter=['a':'z'];% declare array of letters with following index 'a'=1,b='2',..'z'=26;
decode=zeros(size(result));
%find multiplicative inverse of a and m
[g,x,d] = gcd(a,m);
x = mod(x,m); % find multiplicative inverse
for ii=1:n
if ~isspace(result(ii))
index=find(letter==result(ii));
p=mod(x*(index-b),m);
if p==0
c=mod(a*index+b,m);
decode(ii)=letter(c);
else
converted_letter=letter(p);
decode(ii)=converted_letter;
end
else
continue;
end
end
decode=char(decode);
but there was problem, my $p$ value which can be calculated by
$p=x*(c-b)\pmod m$
but at one fragment of code, i am getting $p=0$ which causes error, that why for recovering of original index, i added following fragment
if p==0
c=mod(a*index+b,m);
decode(ii)=letter(c);
but i am getting one place different, between original and decoding text,so where i am getting mistake? please help me