function [ret mat] = babgiatstep(y,base,group)\r
+% [ret mat] = babgiatstep(y,base,group)\r
+\r
%% Step 1\r
n = group-1;\r
m = floor(sqrt(n));\r
function [ret mat] = babygiantstep(y,base,group)\r
+% [ret mat] = babygiantstep(y,base,group)\r
+\r
%% Step 1\r
n = group-1;\r
m = floor(sqrt(n));\r
--- /dev/null
+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
--- /dev/null
+function R = cmaRSA4all(e,d,n)\r
+% R = cmaRSA4all(e,d,n)\r
+% Matrix : [a k t b p1 p2]\r
+\r
+i = 0;\r
+%% 1\r
+ for a = 1:9\r
+ i = i+1;\r
+ k = e*d-1;\r
+ t = gcd(a,n);\r
+ R(i,1:3) = [ a k t ];\r
+ if(t>1)\r
+ R(i,5:6) = [primefak(t) primefak(n/t)];\r
+ continue;\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
+ R(i,5:6) = [ primefak(gcd(b+1,n)) primefak(gcd(b-1,n))];\r
+ break;\r
+ elseif((b~=1)||(mod(k,2)~=0))\r
+ break;\r
+ end\r
+ end\r
+ end\r
+\r
+end
\ No newline at end of file
--- /dev/null
+function y = expmod(base,exp,group)\r
+% [y] = expmod(base,exp,group)\r
+% base^exp mod group\r
+\r
+y=lrexp(base,exp,group,'*',1);\r
+\r
+end\r
+\r
function [inv mat] = invA( a , base)\r
-%INVA Summary of this function goes here\r
-% Detailed explanation goes here\r
+% [inv mat] = invA( a , base)\r
+% berechnet die a^-1 im base-Koerper\r
\r
loop=1;\r
z=1;\r
function [y mat] = lrexp(x,k,base,op,neut)\r
+% [y mat] = lrexp(x,k,base,op,neut)\r
% x^k in (base,op,neut) mit x in base und k in N\r
\r
\r
function [ret mat] = pollard(y,base,group)\r
+% [ret mat] = pollard(y,base,group)\r
\r
mat(1,1:7)=[0 1 0 0 1 0 0];\r
\r
function primed = primefak(base)\r
-\r
+%primed = primefak(base)\r
+%gibt die Primfaktoren der base zurueck\r
\r
prime = primes(base);\r
\r
function isPrime = rabinMillerTest(n, a)
+ % isPrime = rabinMillerTest(n, a)
%
% Rabin-Miller Primzahltest
% Prüft, ob n Primzahl ist.
function [y mat] = sqmult(x,k,base,op,neut)\r
+% [y mat] = sqmult(x,k,base,op,neut)\r
% x^k in (base,op,neut) mit x in base und k in N\r
\r
\r