- •Пояснювальна записка
- •З апорізький національний технічний університет
- •Завдання
- •Календарний план
- •Реферат
- •Перелік умовних позначень та скорочень
- •1 Аналіз технічного завдання
- •1.2 Вибір мови програмування
- •2 Схема порогово підпису ші-фенга
- •Огляд схеми порогового групового підпису
- •2.2 Аналіз
- •3 Схема чіткого блокування небажаних даних підпису фенга
- •3.1 Огляд схеми чесних підписів, що не дають про себе інформацію
- •3.2 Аналіз
- •4 Опис програми
- •5 Керівництво користувача
- •5.2 Характеристики програми
- •5.3 Звернення до програми
- •5.4 Вхідні та вихідні данні
- •Висновки
- •Перелік посилань
- •Додаток а Технічне завдання
- •8 Листів
- •8 Листів
- •Додаток б Лістинг програми
- •Додаток в Блок-схема алгоритму
Додаток а Технічне завдання
ЗАТВЕРДЖУЮ
з ав. кафедрою ПЗ, доцент, к.т.н.
_________________ А.В. Притула
“____” _________________ 2009
"Схема порогового групового підпису
та чіткого блокування небажаних даних"
ЛИСТ ЗАТВЕРДЖЕННЯ
Технічне завдання
13.02070849.00009-01-12-ЛУ
8 Листів
Керівник
____________ А.В. Притула
“____” ________________ 2010
Розробив
ст. гр. ІОТ-427
____________ С.О.Тимчук
“____” ________________ 2010
2010
ЗАТВЕРДЖЕНИЙ
1 3.02070849.00009-01-12-ЛУ
"Схема порогового групового підпису
та чіткого блокування небажаних даних"
ТИТУЛЬНИЙ ЛИСТ
Т ехнічне завдання
13.02070849.00009-01-12
8 Листів
2010
Додаток б Лістинг програми
c1:=8081;
c 2:=7234;
c3:=8952;
c4:=1632;
c5:=9201;
c6:=7262;
c7:=4219;
a:=508080;
fjx:=proc(x,a,nj,q)
f:=a: for j from 1 to nj do f:=f+a od: f:=f-x^(nj-1) mod q;
end proc;
Fid:=proc(x,ID,q,nj)
f:=1: for j from 1 to nj do f:=f*((x-ID) mod q) od
end proc;
GM_x:=proc(a,p)
li:=80;
x:=a^li mod p
end proc;
GM_Y:=proc(x,a,nj,p,q)
d:=nj-1;
fj:=fjx(x,a,nj,q);
fjd:=fj mod x^d;
Y:=1: for j from 1 to nj do Y:=Y*a*fjx(0,a,nj,q) mod p od
end proc;
GM_ID:=proc(ci,a,p)
ID:=a^ci mod p
end proc;
GM_Yd:=proc(ID,a,nj,p,q)
d:=nj-1;
Yd:=a*(fjx(ID,a,nj,q) mod ID^d) mod p
end proc;
GM_Si:=proc(ci,x,ID,a,nj,q)
d:=nj-1;
Ud:=((ci*x+(fjx(ID,a,nj,q) mod ID^d)) mod q);
end proc;
PIDPIS:=proc(c1,c2,c3,c4,c5,c6,c7,a)
nj:=7;
p:=2^512-21;
q:=2^160-210;
x:=GM_x(a,p);
Y:=GM_Y(x,a,nj,p,q);
R1_ID:=GM_ID(c1-8001,a,p);
R1_Si:=GM_Si(c1-8001,x,R1_ID,a,nj,q);
R1_Yd:=GM_Yd(R1_ID,a,nj,p,q);
R2_ID:=GM_ID(c2-7154,a,p);
R2_Si:=GM_Si(c2-7154,x,R2_ID,a,nj,q);
R2_Yd:=GM_Yd(R2_ID,a,nj,p,q);
R3_ID:=GM_ID(c3-8872,a,p);
R3_Si:=GM_Si(c3-8872,x,R3_ID,a,nj,q);
R3_Yd:=GM_Yd(R3_ID,a,nj,p,q);
R4_ID:=GM_ID(c4-1552,a,p);
R4_Si:=GM_Si(c4-1552,x,R4_ID,a,nj,q);
R4_Yd:=GM_Yd(R4_ID,a,nj,p,q);
R5_ID:=GM_ID(c5-9121,a,p);
R5_Si:=GM_Si(c5-9121,x,R5_ID,a,nj,q);
R5_Yd:=GM_Yd(R5_ID,a,nj,p,q);
R6_ID:=GM_ID(c6-7182,a,p);
R6_Si:=GM_Si(c6-7182,x,R6_ID,a,nj,q);
R6_Yd:=GM_Yd(R6_ID,a,nj,p,q);
R7_ID:=GM_ID(c7-4139,a,p);
R7_Si:=GM_Si(c7-4139,x,R7_ID,a,nj,q);
R7_Yd:=GM_Yd(R7_ID,a,nj,p,q);
F1:=Fid(x,R1_ID,q,nj) mod q;
F2:=Fid(x,R2_ID,q,nj) mod q;
F3:=Fid(x,R3_ID,q,nj) mod q;
F4:=Fid(x,R4_ID,q,nj) mod q;
F5:=Fid(x,R5_ID,q,nj) mod q;
F6:=Fid(x,R6_ID,q,nj) mod q;
F7:=Fid(x,R7_ID,q,nj) mod q;
fl:=0;
if(F1=0) then fl:=fl+1 end if;
if(F2=0) then fl:=fl+1 end if;
if(F3=0) then fl:=fl+1 end if;
if(F4=0) then fl:=fl+1 end if;
if(F5=0) then fl:=fl+1 end if;
if(F6=0) then fl:=fl+1 end if;
if(F7=0) then fl:=fl+1 end if;
if(fl=7) then
print("ID вірні"):
prov:=1598214270791418947159711176091236764612842511716083946:
Rj:=(R1_Yd mod q) * (R2_Yd mod q) * (R3_Yd mod q) * (R4_Yd mod q) * (R5_Yd mod q) * (R6_Yd mod q) * (R7_Yd mod q) mod p:
S:=(R1_Si mod q) + (R2_Si mod q) + (R3_Si mod q) + (R4_Si mod q) + (R5_Si mod q) + (R6_Si mod q) + (R7_Si mod q):
ID:=((R1_ID mod p) * (R2_ID mod p) * (R3_ID mod p) * (R4_ID mod p) * (R5_ID mod p) * (R6_ID mod p) * (R7_ID mod p)) mod q:
Q:=Y*ID*Rj mod q:
A:=a*S:
W:=Q-A:
Z:=W mod prov:
if(Z=0) then print("Груповий підпис успішно здійснено")
else print ("Підпис не здійснено") end if:
else print("ID не верні") end if;
end proc;
PIDPIS(c1,c2,c3,c4,c5,c6,c7,a);