]> git.leopard-lacewing.eu Git - crypt.git/commitdiff
git-svn-id: https://drops.fb12.tu-berlin.de/svn/crypt/trunk@6 6904cdf7-2833-49b9...
authortreecity <treecity@6904cdf7-2833-49b9-980b-463876255000>
Mon, 14 Jun 2010 16:23:00 +0000 (16:23 +0000)
committertreecity <treecity@6904cdf7-2833-49b9-980b-463876255000>
Mon, 14 Jun 2010 16:23:00 +0000 (16:23 +0000)
Serie6.m [new file with mode: 0644]
babgiatstep.m [new file with mode: 0644]
babygiantstep.m [new file with mode: 0644]
pollard.m [new file with mode: 0644]

diff --git a/Serie6.m b/Serie6.m
new file mode 100644 (file)
index 0000000..687148c
--- /dev/null
+++ b/Serie6.m
@@ -0,0 +1,9 @@
+%% Aufgabe 31
+[LG mat]babgiastep(13,2,59)
+
+
+
+
+%% Aufgabe 33
+[LG mat]=pollard(13,2,59)
+
diff --git a/babgiatstep.m b/babgiatstep.m
new file mode 100644 (file)
index 0000000..ecd6da9
--- /dev/null
@@ -0,0 +1,25 @@
+function [ret mat] = babgiatstep(y,base,group)\r
+%% Step 1\r
+n = group-1;\r
+m = floor(sqrt(n));\r
+L1 = [0:m-1];\r
+L2 = mod(base.^L1,group);\r
+L = [ L2' L1'];\r
+h=mod(invA(base,group)^m,group);\r
+i=0;\r
+%% Step 2\r
+\r
+j = L(:,1)==y;\r
+mat(1,1:2) = [y,i];\r
+\r
+\r
+while(sum(j)==0)\r
+    i = i+1;\r
+    y = mod(y * h,group);\r
+    mat(i+1,1:2)=[y,i];\r
+    j = L(:,1)==y;\r
+end\r
+\r
+mat;\r
+ret = i*m+find(j)-1;\r
+end
\ No newline at end of file
diff --git a/babygiantstep.m b/babygiantstep.m
new file mode 100644 (file)
index 0000000..6de291f
--- /dev/null
@@ -0,0 +1,27 @@
+function [ret mat] = babygiantstep(y,base,group)\r
+%% Step 1\r
+n = group-1;\r
+m = floor(sqrt(n));\r
+L1 = [0:m-1];\r
+gInv = invA(base,group);\r
+L2 = mod(y.*gInv.^L1,group);\r
+L = [ L2' L1'];\r
+h=mod(base^m,group);\r
+p=1;\r
+i=0;\r
+%% Step 2\r
+\r
+j = L(:,1)==p;\r
+mat(1,1:2) = [p,i];\r
+\r
+\r
+while(sum(j)==0)\r
+    i = i+1;\r
+    p = mod(p * h,group);\r
+    mat(i+1,1:2)=[p,i];\r
+    j = L(:,1)==p;\r
+end\r
+\r
+mat;\r
+ret = i*m+find(j)-1;\r
+end
\ No newline at end of file
diff --git a/pollard.m b/pollard.m
new file mode 100644 (file)
index 0000000..f05a6c1
--- /dev/null
+++ b/pollard.m
@@ -0,0 +1,26 @@
+function [ret mat] = pollard(y,base,group)\r
+\r
+mat(1,1:7)=[0 1 0 0 1 0 0];\r
+\r
+i=1;\r
+\r
+while ((mat(i,2)~=mat(i,5))||(i==1))\r
+    i=i+1;\r
+    mat(i,1)=i+1;\r
+    mat(i,2:4)=f(mat(i-1,2:4));\r
+    mat(i,5:7)=f(f(mat(i-1,5:7)));\r
+end\r
+ret=mod((mat(i,3)-mat(i,6))*invA((mat(i,7)-mat(i,4)),group-1),group-1);\r
+\r
+end\r
+\r
+function y = f(x)\r
+    if(mod(x(1),3)==0)\r
+        y=[mod(2*x(1),59),mod(x(2)+1,59-1),mod(x(3),58)];\r
+    elseif(mod(x(1),3)==1)\r
+        y=[mod(13*x(1),59),mod(x(2),58),mod(x(3)+1,58)];\r
+    else %(mod(x(1),3)==2)\r
+        y=[mod(x(1)^2,59),mod(2*x(2),58),mod(2*x(3),58)];\r
+    end\r
+    \r
+end
\ No newline at end of file