+function [p,R] = cmaRSA(e,d,n)\r
+% Matrix : [a k t b p1 p2]\r
+R=zeros(1,6);\r
+i = 0;\r
+%% 1\r
+ one = 1;\r
+ while(one==1)\r
+ i = i+1;\r
+ a = ceil(rand*(n-1));\r
+ k = e*d-1;\r
+ t = gcd(a,n);\r
+ R(i,1:3) = [a k t];\r
+\r
+ if(t>1)\r
+ p1=primefak(t);\r
+ p2=primefak(n/t);\r
+ if(length(p1)==1)\r
+ R(i,5) = p1; \r
+ elseif(length(p1)==2)\r
+ R(i,5:6) = p1;\r
+ end\r
+ if(length(p2)==1)\r
+ R(i,6) = p2; \r
+ elseif(length(p2)==2)\r
+ R(i,5:6) = p2;\r
+ end\r
+ break;\r
+ end\r
+%% 2\r
+ two = 1;\r
+ while(two==1)\r
+ i=i+1;\r
+ k = k/2;R(i,2) = k;\r
+ b = expmod(a,k,n);R(i,4) = b;\r
+ if(abs(b)~=1)\r
+ p1 = primefak(gcd(b+1,n));\r
+ p2 = primefak(gcd(b-1,n));\r
+ if(length(p1)==1)\r
+ R(i,5) = p1; \r
+ elseif(length(p1)==2)\r
+ R(i,5:6) = p1;\r
+ end\r
+ if(length(p2)==1)\r
+ R(i,6) = p2; \r
+ elseif(length(p2)==2)\r
+ R(i,5:6) = p2;\r
+ end\r
+ one = 0;\r
+ break;\r
+ elseif((b~=1)||(mod(k,2)~=0))\r
+ break;\r
+ end\r
+ end\r
+ end\r
+ p = R(i,5:6);\r
+end
\ No newline at end of file