【发布时间】:2017-02-24 16:32:28
【问题描述】:
您好,我想知道是否有人可以帮助我解决以下问题我对 a 部分的尝试如下。 我不明白为什么我的程序不起作用,它运行但在评估 b 部分的程序时没有返回任何值。我已经使用 print 命令来检查数组是否找到了它似乎正在做的匹配,但看起来它只是忽略了它
小步巨步的协议如下
我的程序如下:
proc3 := proc (alpha, beta, p)
local k, R, i, j, N, A, t;
description "baby step giant step procedure";
N := floor(sqrt(p-1))+1;
A := Array(0 .. N);
for j from 0 to N do
A[j] := `mod`(alpha^j, p)
oo;
for i from 0 to N do
t := (beta*alpha^(-N*i))modp;
for k from 0 to N do
print(t, A[k]);
if t = A*[k] then
return k+N*i;
fi;
od;
od;
end proc;
当我这样做时 程序 3(3, 64, 137) 它什么也没返回,所以我把打印命令放进去,现在它给出了
64, 1
64, 3
64, 9
64, 27
64, 81
64, 106
64, 44
64, 132
64, 122
64, 92
64, 2
64, 6
64, 18
34, 1
34, 3
34, 9
34, 27
34, 81
34, 106
34, 44
34, 132
34, 122
34, 92
34, 2
34, 6
34, 18
78, 1
78, 3
78, 9
78, 27
78, 81
78, 106
78, 44
78, 132
78, 122
78, 92
78, 2
78, 6
78, 18
50, 1
50, 3
50, 9
50, 27
50, 81
50, 106
50, 44
50, 132
50, 122
50, 92
50, 2
50, 6
50, 18
18, 1
18, 3
18, 9
18, 27
18, 81
18, 106
18, 44
18, 132
18, 122
18, 92
18, 2
18, 6
18, 18
1, 1
1, 3
1, 9
1, 27
1, 81
1, 106
1, 44
1, 132
1, 122
1, 92
1, 2
1, 6
1, 18
99, 1
99, 3
99, 9
99, 27
99, 81
99, 106
99, 44
99, 132
99, 122
99, 92
99, 2
99, 6
99, 18
74, 1
74, 3
74, 9
74, 27
74, 81
74, 106
74, 44
74, 132
74, 122
74, 92
74, 2
74, 6
74, 18
65, 1
65, 3
65, 9
65, 27
65, 81
65, 106
65, 44
65, 132
65, 122
65, 92
65, 2
65, 6
65, 18
133, 1
133, 3
133, 9
133, 27
133, 81
133, 106
133, 44
133, 132
133, 122
133, 92
133, 2
133, 6
133, 18
15, 1
15, 3
15, 9
15, 27
15, 81
15, 106
15, 44
15, 132
15, 122
15, 92
15, 2
15, 6
15, 18
115, 1
115, 3
115, 9
115, 27
115, 81
115, 106
115, 44
115, 132
115, 122
115, 92
115, 2
115, 6
115, 18
14, 1
14, 3
14, 9
14, 27
14, 81
14, 106
14, 44
14, 132
14, 122
14, 92
14, 2
14, 6
14, 18
你可以清楚地看到比赛是在 18,18,但由于某种原因它没有考虑到这一点,任何人都可以看到我做错了什么吗?它开始变得有压力。还有我们如何提高程序的效率,以便它可以计算更大的 a、b 和 p 值的 x。对于 c 部分,我知道我需要使用 a 部分的程序。 感谢您花时间阅读本文,我们将不胜感激。
我的c部分流程如下
Elgamal := proc (ciphy, hkt, p, a, b)
local i, icdarray, s, q;
icdarray := Array(5 .. 388);
for i from 5 to 388 do
s := ciphy[i];
q := `mod`(1/hkt^proc3(a, b, p), p);
icdarray[i] := s*q;
end do;
return convert(icdarray, bytes);
end proc;
其中proc3如下
proc3 := proc (alpha, beta, p)
local k, R, i, j, N, A, t;
Description "baby step giant step procedure";
N := floor(sqrt(p-1))+1;
A := Array(0 .. N);
for j from 0 to N do
A[j] := `mod`(alpha&^j, p);
end do;
for i from 0 to N do
t := `mod`(beta*alpha&^(-N*i), p);
for k from 0 to N do
if t = A[k]
then return k+N*i;
end if;
end do;
end do;
end proc;
header := 9681348997
密文: [12432485341, 2579085006, 13736574369, 4105371047, 9573017222,
7824534168、10017411248、13292180343、2356887993、9573017222、
10017411248、13765667419、9795214235、10017411248、2801282019、
608404939、4105371047、13765667419、11572790339、13765667419、
11765894302、10017411248、13765667419、4549765073、10017411248、
13736574369、2579085006、4549765073、10017411248、4549765073、
13765667419、2801282019、830601952、4105371047、10017411248、
7824534168、13765667419、13736574369、2801282019、7824534168、
10017411248、830601952、9573017222、4327568060、13765667419、
6076051114、8268928194、13292180343、10017411248、7824534168、
386207926、2801282019、4105371047、2579085006、6076051114、
608404939、13765667419、6076051114、830601952、13765667419、
4105371047、11765894302、10017411248、13765667419、13292180343、
13736574369, 10017411248, 608404939, 10017411248, 7824534168,
2134690980、13765667419、4105371047、11765894302、2801282019、
4105371047、13765667419、2579085006、608404939、13292180343、
11543697289、2579085006、7824534168、10017411248、4549765073、
13765667419、4994159099、5853854101、6076051114、830601952、
4327568060、6076051114、5853854101、10017411248、7824534168、
13765667419、4105371047、6076051114、13765667419、9573017222、
13292180343、10017411248、13765667419、4105371047、11765894302、
10017411248、13765667419、5853854101、6076051114、7824534168、
4549765073、13765667419、11572790339、13765667419、4105371047、
11765894302、2801282019、4105371047、13765667419、4105371047、
11765894302、10017411248、13765667419、4327568060、2801282019、
608404939、4549765073、13292180343、13736574369、2801282019、
11543697289、10017411248、13765667419、5853854101、2801282019、
13292180343、13765667419、11765894302、6076051114、7824534168、
7824534168、2579085006、8268928194、4327568060、2134690980、
13765667419、11543697289、7824534168、10017411248、13736574369、
2579085006、11543697289、2579085006、4105371047、6076051114、
9573017222、13292180343、2385981043、13765667419、3245676045、
9573017222、2801282019、2579085006、608404939、4105371047、
6105144164、13765667419、5853854101、11765894302、10017411248、
608404939、13765667419、9573017222、13292180343、10017411248、
4549765073、13765667419、4105371047、6076051114、13765667419、
4549765073、10017411248、13292180343、13736574369、7824534168、
2579085006、8268928194、10017411248、13765667419、4105371047、
11765894302、10017411248、13765667419、6076051114、13736574369、
13736574369、2801282019、13292180343、2579085006、6076051114、
608404939、2801282019、4327568060、13765667419、386207926、
2579085006、4327568060、4327568060、2801282019、6298248127、
10017411248、13765667419、4105371047、11765894302、7824534168、
6076051114、9573017222、6298248127、11765894302、13765667419、
5853854101、11765894302、2579085006、13736574369、11765894302、
13765667419、4105371047、11765894302、10017411248、2134690980、
13765667419、11543697289、2801282019、13292180343、13292180343、
10017411248、4549765073、6105144164、13765667419、9795214235、
10017411248、2801282019、608404939、4105371047、13765667419、
830601952, 10017411248, 386207926, 10017411248, 7824534168,
11572790339、7824534168、2579085006、4549765073、4549765073、
10017411248、608404939、13765667419、2801282019、608404939、
4549765073、13765667419、4105371047、9573017222、9795214235、
8268928194、4327568060、10017411248、4549765073、6076051114、
5853854101、608404939、2385981043、13765667419、4994159099、
5853854101、6076051114、830601952、4327568060、6076051114、
5853854101、10017411248、7824534168、13765667419、5853854101、
2801282019、13292180343、13765667419、2801282019、13765667419、
4105371047、6076051114、9573017222、7824534168、2579085006、
13292180343、4105371047、6105144164、13765667419、4105371047、
11765894302、10017411248、13765667419、830601952、2579085006、
7824534168、13292180343、4105371047、13765667419、10017411248、
386207926、10017411248、7824534168、13765667419、13292180343、
10017411248、10017411248、608404939、13765667419、6076051114、
608404939、13765667419、4105371047、11765894302、10017411248、
13765667419、5438553125、2579085006、13292180343、13736574369、
5853854101、6076051114、7824534168、4327568060、4549765073、
2385981043、13765667419、4994159099、6076051114、9573017222、
7824534168、2579085006、13292180343、4105371047、6105144164、
13765667419、8713322220、2579085006、608404939、13736574369、
10017411248、5853854101、2579085006、608404939、4549765073、
13765667419、11765894302、2801282019、4549765073、13765667419、
4549765073、10017411248、13736574369、2579085006、4549765073、
10017411248、4549765073、6105144164、13765667419、9795214235、
10017411248、2801282019、608404939、4105371047、13765667419、
8075824231、2579085006、4549765073、2579085006、6076051114、
4105371047、8075824231、2385981043]
【问题讨论】:
-
正如您在另一个问题的回答中提到的,在 mod 调用中使用语法
&^而不是^。否则,在使用 mod 之前会完成潜在的大而昂贵的显式供电。 -
是的,谢谢你,我忘了把它放在里面
-
不要因为您不希望其他人(或讲师)看到完整的故事而删除问题的重要部分(包括协议细节等)。
标签: encryption discrete-mathematics maple elgamal