嗨,我想知道是否有人可以帮助我解决以下问题我对 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;
当我执行 proc3(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。对于 ci 部分,我知道我需要使用 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]