Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснювальна записка.doc
Скачиваний:
2
Добавлен:
21.08.2019
Размер:
399.87 Кб
Скачать

Додаток а Технічне завдання

ЗАТВЕРДЖУЮ

з ав. кафедрою ПЗ, доцент, к.т.н.

_________________ А.В. Притула

“____” _________________ 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);