From: treecity Date: Tue, 22 Jun 2010 14:57:56 +0000 (+0000) Subject: Interne Matlab Info hinzugefügt bei: X-Git-Url: https://git.leopard-lacewing.eu/?a=commitdiff_plain;p=crypt.git Interne Matlab Info hinzugefügt bei: baygianstep invA lrexp pollard primfak sqmult rabinMillerTest Abkürzung für a^k mod n zu lrexp erstellt: expmod RSA Atacke aus Serie4 hinzugefügt, wobei 4all nur die Einstelligen a testet cmaRSA cmaRSA4all git-svn-id: https://drops.fb12.tu-berlin.de/svn/crypt/trunk@7 6904cdf7-2833-49b9-980b-463876255000 --- diff --git a/babgiatstep.m b/babgiatstep.m index ecd6da9..9b03c8e 100644 --- a/babgiatstep.m +++ b/babgiatstep.m @@ -1,4 +1,6 @@ function [ret mat] = babgiatstep(y,base,group) +% [ret mat] = babgiatstep(y,base,group) + %% Step 1 n = group-1; m = floor(sqrt(n)); diff --git a/babygiantstep.m b/babygiantstep.m index 6de291f..d17d532 100644 --- a/babygiantstep.m +++ b/babygiantstep.m @@ -1,4 +1,6 @@ function [ret mat] = babygiantstep(y,base,group) +% [ret mat] = babygiantstep(y,base,group) + %% Step 1 n = group-1; m = floor(sqrt(n)); diff --git a/cmaRSA.m b/cmaRSA.m new file mode 100644 index 0000000..b5a9cc5 --- /dev/null +++ b/cmaRSA.m @@ -0,0 +1,56 @@ +function [p,R] = cmaRSA(e,d,n) +% Matrix : [a k t b p1 p2] +R=zeros(1,6); +i = 0; +%% 1 + one = 1; + while(one==1) + i = i+1; + a = ceil(rand*(n-1)); + k = e*d-1; + t = gcd(a,n); + R(i,1:3) = [a k t]; + + if(t>1) + p1=primefak(t); + p2=primefak(n/t); + if(length(p1)==1) + R(i,5) = p1; + elseif(length(p1)==2) + R(i,5:6) = p1; + end + if(length(p2)==1) + R(i,6) = p2; + elseif(length(p2)==2) + R(i,5:6) = p2; + end + break; + end +%% 2 + two = 1; + while(two==1) + i=i+1; + k = k/2;R(i,2) = k; + b = expmod(a,k,n);R(i,4) = b; + if(abs(b)~=1) + p1 = primefak(gcd(b+1,n)); + p2 = primefak(gcd(b-1,n)); + if(length(p1)==1) + R(i,5) = p1; + elseif(length(p1)==2) + R(i,5:6) = p1; + end + if(length(p2)==1) + R(i,6) = p2; + elseif(length(p2)==2) + R(i,5:6) = p2; + end + one = 0; + break; + elseif((b~=1)||(mod(k,2)~=0)) + break; + end + end + end + p = R(i,5:6); +end \ No newline at end of file diff --git a/cmaRSA4all.m b/cmaRSA4all.m new file mode 100644 index 0000000..e690f9b --- /dev/null +++ b/cmaRSA4all.m @@ -0,0 +1,31 @@ +function R = cmaRSA4all(e,d,n) +% R = cmaRSA4all(e,d,n) +% Matrix : [a k t b p1 p2] + +i = 0; +%% 1 + for a = 1:9 + i = i+1; + k = e*d-1; + t = gcd(a,n); + R(i,1:3) = [ a k t ]; + if(t>1) + R(i,5:6) = [primefak(t) primefak(n/t)]; + continue; + end +%% 2 + two = 1; + while(two==1) + i = i+1; + k = k/2; R(i,2) = k; + b = expmod(a,k,n); R(i,4) = b; + if(abs(b)~=1) + R(i,5:6) = [ primefak(gcd(b+1,n)) primefak(gcd(b-1,n))]; + break; + elseif((b~=1)||(mod(k,2)~=0)) + break; + end + end + end + +end \ No newline at end of file diff --git a/expmod.m b/expmod.m new file mode 100644 index 0000000..9cf9e5e --- /dev/null +++ b/expmod.m @@ -0,0 +1,8 @@ +function y = expmod(base,exp,group) +% [y] = expmod(base,exp,group) +% base^exp mod group + +y=lrexp(base,exp,group,'*',1); + +end + diff --git a/invA.m b/invA.m index 4db3043..68e1edd 100644 --- a/invA.m +++ b/invA.m @@ -1,6 +1,6 @@ function [inv mat] = invA( a , base) -%INVA Summary of this function goes here -% Detailed explanation goes here +% [inv mat] = invA( a , base) +% berechnet die a^-1 im base-Koerper loop=1; z=1; diff --git a/lrexp.m b/lrexp.m index c706038..e0034e9 100644 --- a/lrexp.m +++ b/lrexp.m @@ -1,4 +1,5 @@ function [y mat] = lrexp(x,k,base,op,neut) +% [y mat] = lrexp(x,k,base,op,neut) % x^k in (base,op,neut) mit x in base und k in N diff --git a/pollard.m b/pollard.m index f05a6c1..4e7b09c 100644 --- a/pollard.m +++ b/pollard.m @@ -1,4 +1,5 @@ function [ret mat] = pollard(y,base,group) +% [ret mat] = pollard(y,base,group) mat(1,1:7)=[0 1 0 0 1 0 0]; diff --git a/primefak.m b/primefak.m index 14f4fe8..47d47b7 100644 --- a/primefak.m +++ b/primefak.m @@ -1,5 +1,6 @@ function primed = primefak(base) - +%primed = primefak(base) +%gibt die Primfaktoren der base zurueck prime = primes(base); diff --git a/rabinMillerTest.m b/rabinMillerTest.m index 79dac7b..6d6bebc 100644 --- a/rabinMillerTest.m +++ b/rabinMillerTest.m @@ -1,4 +1,5 @@ function isPrime = rabinMillerTest(n, a) + % isPrime = rabinMillerTest(n, a) % % Rabin-Miller Primzahltest % Prüft, ob n Primzahl ist. diff --git a/sqmult.m b/sqmult.m index 068e886..5bb6a92 100644 --- a/sqmult.m +++ b/sqmult.m @@ -1,4 +1,5 @@ function [y mat] = sqmult(x,k,base,op,neut) +% [y mat] = sqmult(x,k,base,op,neut) % x^k in (base,op,neut) mit x in base und k in N