I am getting this error: Error using * MTIMES (*) is not fully supported for integer classes. At least one argument must be scalar. Error in RSA (line 4) n =p*q;
21 views (last 30 days)
Show older comments
%Input value of p and q
p =input('\nValue of p: ');
q =input('\nValue of q: ');
n =p*q;%Calculate value of n
tf=(p-1)*(q-1);%Calculate value of totien function
%Calculate the value of e
x=2;e=1;
while x > 1
e=e+1;
x=gcd(tf,e);%Search greatest common division
end
%Calculate the value of d
i=1;
d=0;
e=7;
while i > 0
d = d+1;
x = e*d;
x = mod(x,tf);
if x == 1
i = 0;
end
end
P = input('\nInput text: ','s');
c = double(P);
disp('Text: ');
disp(P);
disp(e);
disp(d);
disp('Ascii Text: ');
disp(c);
%Encrypt
%cipher= power(c,e);
%cipher= mod(cipher,n);
cipher=powermod (c, e, n);
disp('cipher: ');
disp(cipher);
%Decrypt
%plain= power(cipher,d);
%plain= mod(plain,n);
plain=powermod (cipher, d, n);
disp('decrypt: ');
disp(plain);
disp('Inputted Text: ');
disp(char(plain));%Convert double to char
0 Comments
Answers (1)
Walter Roberson
on 21 Feb 2020
somehow you are entering integer data-type arrays in response the prompts for p and q. For example you might be naming variables that store the data in response to the prompts. If you are working with image encryption then your variables would be likely to be uint8.
You are trying to use the * operator between two integer data-type arrays. The * operator is the algebraic matrix multiplication operator ("inner product"), not the element-by-element multiplication operators. The * operator is not supported between two arrays that are integer data-type .
The work-around would be:
n = cast(double(p)*double(q), class(p));
However, in context I think your code is expecting you to enter scalar values in response to the two prompts, so you should explore more how whatever response you are making to the prompts is getting interpreted as designating integer arrays.
0 Comments
See Also
Categories
Find more on Matrices and Arrays in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!