From f38124d17fa55f57e1100f238f9f2ded63304a1a Mon Sep 17 00:00:00 2001 From: treecity Date: Mon, 14 Jun 2010 16:23:00 +0000 Subject: [PATCH] git-svn-id: https://drops.fb12.tu-berlin.de/svn/crypt/trunk@6 6904cdf7-2833-49b9-980b-463876255000 --- Serie6.m | 9 +++++++++ babgiatstep.m | 25 +++++++++++++++++++++++++ babygiantstep.m | 27 +++++++++++++++++++++++++++ pollard.m | 26 ++++++++++++++++++++++++++ 4 files changed, 87 insertions(+) create mode 100644 Serie6.m create mode 100644 babgiatstep.m create mode 100644 babygiantstep.m create mode 100644 pollard.m diff --git a/Serie6.m b/Serie6.m new file mode 100644 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 index 0000000..ecd6da9 --- /dev/null +++ b/babgiatstep.m @@ -0,0 +1,25 @@ +function [ret mat] = babgiatstep(y,base,group) +%% Step 1 +n = group-1; +m = floor(sqrt(n)); +L1 = [0:m-1]; +L2 = mod(base.^L1,group); +L = [ L2' L1']; +h=mod(invA(base,group)^m,group); +i=0; +%% Step 2 + +j = L(:,1)==y; +mat(1,1:2) = [y,i]; + + +while(sum(j)==0) + i = i+1; + y = mod(y * h,group); + mat(i+1,1:2)=[y,i]; + j = L(:,1)==y; +end + +mat; +ret = i*m+find(j)-1; +end \ No newline at end of file diff --git a/babygiantstep.m b/babygiantstep.m new file mode 100644 index 0000000..6de291f --- /dev/null +++ b/babygiantstep.m @@ -0,0 +1,27 @@ +function [ret mat] = babygiantstep(y,base,group) +%% Step 1 +n = group-1; +m = floor(sqrt(n)); +L1 = [0:m-1]; +gInv = invA(base,group); +L2 = mod(y.*gInv.^L1,group); +L = [ L2' L1']; +h=mod(base^m,group); +p=1; +i=0; +%% Step 2 + +j = L(:,1)==p; +mat(1,1:2) = [p,i]; + + +while(sum(j)==0) + i = i+1; + p = mod(p * h,group); + mat(i+1,1:2)=[p,i]; + j = L(:,1)==p; +end + +mat; +ret = i*m+find(j)-1; +end \ No newline at end of file diff --git a/pollard.m b/pollard.m new file mode 100644 index 0000000..f05a6c1 --- /dev/null +++ b/pollard.m @@ -0,0 +1,26 @@ +function [ret mat] = pollard(y,base,group) + +mat(1,1:7)=[0 1 0 0 1 0 0]; + +i=1; + +while ((mat(i,2)~=mat(i,5))||(i==1)) + i=i+1; + mat(i,1)=i+1; + mat(i,2:4)=f(mat(i-1,2:4)); + mat(i,5:7)=f(f(mat(i-1,5:7))); +end +ret=mod((mat(i,3)-mat(i,6))*invA((mat(i,7)-mat(i,4)),group-1),group-1); + +end + +function y = f(x) + if(mod(x(1),3)==0) + y=[mod(2*x(1),59),mod(x(2)+1,59-1),mod(x(3),58)]; + elseif(mod(x(1),3)==1) + y=[mod(13*x(1),59),mod(x(2),58),mod(x(3)+1,58)]; + else %(mod(x(1),3)==2) + y=[mod(x(1)^2,59),mod(2*x(2),58),mod(2*x(3),58)]; + end + +end \ No newline at end of file -- 2.47.3