laborator11

1
Criptografie laborator 11 Laborator 11 1) Să se scrie un program pentru partajarea unui secret si pentru reconstituirea acestuia folosind algoritmul lui Shamir (Shamir's Secret Sharing). Soluție: void fragmentare_secret(){ int S,n,k,p,*a; cout<<"Dati secretul: "; cin>>S; cout<<"Dati numarul total de fragmente: "; cin>>n; cout<<"Dati numarul de fragmente pentru reconstituirea secretului: "; cin>>k; p=da_prim(S>n?S:n,100000,0); a=new int[k]; a[0]=S; for(int i=1;i<k-1;i++) a[i]=rand()%p; a[k-1]=1+rand()%(p-1); cout<<"\nFragmente generate:\n"; for(int i=1;i<=n;i++) cout<<"("<<i<<","<<val_pol(a,k-1,i,p)<<")"<<" "; cout<<"S-a folosit numarul prim: "<<p<<endl; } void reconstituire_secret(){ int S=0,k,p,*x,*y; cout<<"Dati numarul prim: "; cin>>p; cout<<"Dati numarul de fragmente pentru reconstituirea secretului: "; cin>>k; x=new int[k]; y=new int[k]; cout<<"Dati fragmentele: "<<endl; for(int i=0;i<k;i++){ cout<<"x["<<(i+1)<<"]="; cin>>x[i]; cout<<"y["<<(i+1)<<"]="; cin>>y[i]; } for(int i=0;i<k;i++){ int l=1; for(int j=0;j<k;j++) if(j!=i)l=modulo(-x[j]*l*invers(x[i]-x[j],p),p); S=modulo(S+y[i]*l,p); } cout<<"Secretul este: "<<S<<endl; }

Upload: adrian-hagiu

Post on 10-Nov-2015

213 views

Category:

Documents


0 download

DESCRIPTION

labo

TRANSCRIPT

  • Criptografie laborator 11

    Laborator 11

    1) S se scrie un program pentru partajarea unui secret si pentru reconstituirea acestuia folosind algoritmul lui Shamir (Shamir's Secret Sharing).

    Soluie: void fragmentare_secret(){ int S,n,k,p,*a; coutS; coutn; coutk; p=da_prim(S>n?S:n,100000,0); a=new int[k]; a[0]=S; for(int i=1;i