]> git.leopard-lacewing.eu Git - crypt.git/commitdiff
Interne Matlab Info hinzugefügt bei: master
authortreecity <treecity@6904cdf7-2833-49b9-980b-463876255000>
Tue, 22 Jun 2010 14:57:56 +0000 (14:57 +0000)
committertreecity <treecity@6904cdf7-2833-49b9-980b-463876255000>
Tue, 22 Jun 2010 14:57:56 +0000 (14:57 +0000)
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

babgiatstep.m
babygiantstep.m
cmaRSA.m [new file with mode: 0644]
cmaRSA4all.m [new file with mode: 0644]
expmod.m [new file with mode: 0644]
invA.m
lrexp.m
pollard.m
primefak.m
rabinMillerTest.m
sqmult.m

index ecd6da9249697d02ab04d1404585d191a4d87f23..9b03c8ec7fca22a012e96d936071ce5340416444 100644 (file)
@@ -1,4 +1,6 @@
 function [ret mat] = babgiatstep(y,base,group)\r
 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
 %% Step 1\r
 n = group-1;\r
 m = floor(sqrt(n));\r
index 6de291fe17cfeff02a55cc07e004b690f8ce166b..d17d532e6558fba7d3559ebfbbe8a0e29d6e7a97 100644 (file)
@@ -1,4 +1,6 @@
 function [ret mat] = babygiantstep(y,base,group)\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
 %% Step 1\r
 n = group-1;\r
 m = floor(sqrt(n));\r
diff --git a/cmaRSA.m b/cmaRSA.m
new file mode 100644 (file)
index 0000000..b5a9cc5
--- /dev/null
+++ b/cmaRSA.m
@@ -0,0 +1,56 @@
+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
diff --git a/cmaRSA4all.m b/cmaRSA4all.m
new file mode 100644 (file)
index 0000000..e690f9b
--- /dev/null
@@ -0,0 +1,31 @@
+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
diff --git a/expmod.m b/expmod.m
new file mode 100644 (file)
index 0000000..9cf9e5e
--- /dev/null
+++ b/expmod.m
@@ -0,0 +1,8 @@
+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
diff --git a/invA.m b/invA.m
index 4db3043bd369cf152863421e2ea73b553141d620..68e1edd783015f7b19b66fc8f4ff86ab755dc52d 100644 (file)
--- a/invA.m
+++ b/invA.m
@@ -1,6 +1,6 @@
 function [inv mat] = invA( a , base)\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
 \r
 loop=1;\r
 z=1;\r
diff --git a/lrexp.m b/lrexp.m
index c706038bb88ea4db9cdd7df4dc8aa5859509d356..e0034e978da49347631a0d90fea868647dfc8a94 100644 (file)
--- a/lrexp.m
+++ b/lrexp.m
@@ -1,4 +1,5 @@
 function [y mat] = lrexp(x,k,base,op,neut)\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
 % x^k in (base,op,neut) mit x in base und k in N\r
 \r
 \r
index f05a6c15e41a40207e91374feb2120698afab369..4e7b09cbce9be76816686d3d796fc36ceaac49b3 100644 (file)
--- a/pollard.m
+++ b/pollard.m
@@ -1,4 +1,5 @@
 function [ret mat] = pollard(y,base,group)\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
 \r
 mat(1,1:7)=[0 1 0 0 1 0 0];\r
 \r
index 14f4fe88b06c7e1cac9500af5867125d0d520dad..47d47b77378a6a8a0d4427edfd9c65e78e38d047 100644 (file)
@@ -1,5 +1,6 @@
 function primed = primefak(base)\r
 function primed = primefak(base)\r
-\r
+%primed = primefak(base)\r
+%gibt die Primfaktoren der base zurueck\r
 \r
 prime = primes(base);\r
 \r
 \r
 prime = primes(base);\r
 \r
index 79dac7bac664003ed2c3f986c299bd55884ba28c..6d6bebca778dea2ab831fef9ad4f0c8f630508da 100644 (file)
@@ -1,4 +1,5 @@
 function isPrime = rabinMillerTest(n, a)
 function isPrime = rabinMillerTest(n, a)
+    % isPrime = rabinMillerTest(n, a)
     %
     % Rabin-Miller Primzahltest
     % Prüft, ob n Primzahl ist.
     %
     % Rabin-Miller Primzahltest
     % Prüft, ob n Primzahl ist.
index 068e886e308610a968a0e5c2d0b9b6583609d881..5bb6a922ce595ac0081592f027542f568db42e11 100644 (file)
--- a/sqmult.m
+++ b/sqmult.m
@@ -1,4 +1,5 @@
 function [y mat] = sqmult(x,k,base,op,neut)\r
 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
 % x^k in (base,op,neut) mit x in base und k in N\r
 \r
 \r