密碼學(xué)實驗第三組實驗報告_第1頁
密碼學(xué)實驗第三組實驗報告_第2頁
密碼學(xué)實驗第三組實驗報告_第3頁
密碼學(xué)實驗第三組實驗報告_第4頁
密碼學(xué)實驗第三組實驗報告_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

云南大學(xué)數(shù)學(xué)與統(tǒng)計學(xué)實驗教學(xué)中心實驗報告第2頁共5頁云南大學(xué)數(shù)學(xué)與統(tǒng)計學(xué)實驗教學(xué)中心實驗報告第1頁共2頁云南大學(xué)數(shù)學(xué)與統(tǒng)計學(xué)實驗教學(xué)中心實驗報告課程名稱:密碼學(xué)實驗學(xué)期:2013-2014學(xué)年第一學(xué)期成績:指導(dǎo)教師:陸正福學(xué)生姓名:盧富毓學(xué)生學(xué)號:20101910072實驗名稱:零知識證明實驗要求:必做實驗學(xué)時:4學(xué)時實驗編號:No.3實驗日期:2013/9/28完成日期:2012/10/18學(xué)院:數(shù)學(xué)與統(tǒng)計學(xué)院專業(yè):信息與計算科學(xué)年級:2010級實驗?zāi)康模毫私饬阒R證明,同時掌握FFS識別方案。二、實驗內(nèi)容:1.

理解零知識證明2.

基于GMP實現(xiàn)FFS零知識證明方案三、實驗環(huán)境Linux平臺Code::BlockIDE網(wǎng)絡(luò)在線編程平臺(本實驗是在此平臺中完成的,效果一樣)四、實驗過程(請學(xué)生認(rèn)真填寫):預(yù)備知識:“零知識證明”它指的是證明者能夠在不向驗證者提供任何有用的信息的情況下,使驗證者相信某個論斷是正確的。零知識證明實質(zhì)上是一種涉及兩方或更多方的協(xié)議,即兩方或更多方完成一項任務(wù)所需采取的一系列步驟。證明者向驗證者證明并使其相信自己知道或擁有某一消息,但證明過程不能向驗證者泄漏任何關(guān)于被證明消息的信息。實驗過程A、原理分析:Feige-Fait-Shamir是一種并行的認(rèn)證形式。具體做法如下 首先:選擇大素數(shù)q和p,計算n=pq,Peggy擁有密鑰s1,s2,...,sk 接著做如下UML圖中的內(nèi)容: B、具體代碼:#include<iostream>#include<gmp.h>#include<gmpxx.h>usingnamespacestd;classFFShamir{public:mpz_classf_GetRandom(intl,boolb_state);public:mpz_classm_p;mpz_classm_q;//bothm_pandm_qareprimenumbermpz_classn;//n=p*qboolisSuccess;};mpz_classFFShamir::f_GetRandom(intl,boolb_state=true){mpz_classp;//pisprimelongm_time;time(&m_time);gmp_randstate_tstate;//stategmp_randinit_default(state);//initgmp_randseed_ui(state,m_time);//guaranteetheresultdefrenceeverytimempz_urandomb(p.get_mpz_t(),state,l);//Generateauniformlydistributedrandomintegerintherange0to2^n?1,inclusive.if(b_state){mpz_nextprime(p.get_mpz_t(),p.get_mpz_t());//generatePrime}returnp;}intmain(intargc,char*argv[]){FFShamirffs;//createobjectintl,m,n,i,j=1;mpz_class*s;mpz_class*v;mpz_class*b;mpz_classr,x,y,z,sum;mpz_classtow=2;//getn=pqcout<<"Pleaseinputtheboundofprimenumberlength,l=";cin>>l;ffs.m_p=ffs.f_GetRandom(l);ffs.m_q=ffs.f_GetRandom(l);mpz_mul(ffs.n.get_mpz_t(),ffs.m_p.get_mpz_t(),ffs.m_q.get_mpz_t());//Peggyhassecretarraycout<<"Peggy:Pleaseinouthowmanykey,m=";cin>>m;s=newmpz_class[m];v=newmpz_class[m];b=newmpz_class[m];cout<<"Peggy:Pleaseinputsubkey:";for(i=0;i<m;i++){cin>>s[i];v[i]=0;b[i]=0;}cout<<"Victor:Pleaseinputhowmanytimeyouwantvirifier.t=";cin>>n;//PeggyComputessubkeys'invert,vi=si^-2modnfor(inti=0;i<m;i++){mpz_invert(v[i].get_mpz_t(),s[i].get_mpz_t(),ffs.n.get_mpz_t());mpz_powm(v[i].get_mpz_t(),v[i].get_mpz_t(),tow.get_mpz_t(),ffs.n.get_mpz_t());}while(j<=n){//getxsendtoVicatorr=ffs.f_GetRandom(l,false);mpz_powm(x.get_mpz_t(),r.get_mpz_t(),tow.get_mpz_t(),ffs.n.get_mpz_t());//x=r^2modn//Victorchosenumberb1..bk,andbibelong0or1if(j==1){cout<<"\n***************firsttimeverifer***************"<<endl;cout<<"Victor:Peggyhas"<<m<<"subkey!"<<endl;}else{cout<<"****************"<<j<<"thtimeverifer****************"<<endl;}cout<<"\tPleasechooseyoubisendtoPeggy.b[m]=";for(i=0;i<m;i++){cin>>b[i];//cout<<"m="<<i<<endl;}//Peggycomputey=r*(s1^b1)..(si^bi)sendtoVictory=1;for(i=0;i<m;i++){mpz_powm(sum.get_mpz_t(),s[i].get_mpz_t(),b[i].get_mpz_t(),ffs.n.get_mpz_t());//sum=si^bimpz_mul(y.get_mpz_t(),y.get_mpz_t(),sum.get_mpz_t());//y=y*sumsum=0;}mpz_mul(y.get_mpz_t(),y.get_mpz_t(),r.get_mpz_t());//y=r*ympz_mod(y.get_mpz_t(),y.get_mpz_t(),ffs.n.get_mpz_t());//y=ymodn//Victorchecksthatx=y^2*v1^b1*..vk^bkz=1;for(i=0;i<m;i++){mpz_powm(sum.get_mpz_t(),v[i].get_mpz_t(),b[i].get_mpz_t(),ffs.n.get_mpz_t());//sum=si^bimpz_mul(z.get_mpz_t(),z.get_mpz_t(),sum.get_mpz_t());//y=y*sumsum=0;}mpz_powm(y.get_mpz_t(),y.get_mpz_t(),tow.get_mpz_t(),ffs.n.get_mpz_t());//y=y^2mpz_mul(z.get_mpz_t(),z.get_mpz_t(),y.get_mpz_t());//z=y^2*v1^b1*..vk^bkmpz_mod(z.get_mpz_t(),z.get_mpz_t(),ffs.n.get_mpz_t());//z=zmodnif(mpz_cmp(z.get_mpz_t(),x.get_mpz_t())!=0){//ifnotequal,thatmeanisPeggydoesonthavesubkeycout<<"Victor:ha,ha!youarecheater!\n\tbyebye"<<endl;ffs.isSuccess=false;break;}else{cout<<"Victor:Thatisok!"<<endl;ffs.isSuccess=true;j++;}}if(ffs.isSuccess){cout<<"Peggy'swordsistrusty"<<endl;}else{cout<<"Peggy'swordsisn'ttrusty"<<endl;}return0;}實驗結(jié)果://缺點有:首先在編寫好程序后才發(fā)現(xiàn),無法模擬偽造者來進行。這個由結(jié)果就能看出來。//同時,此程序僅僅模擬,做不到并行認(rèn)證。五、實驗總結(jié)1.遇到的問題、分析并的出方案(列出遇到的問題和解決辦法,列出沒有解決的問題):遇到問題:主要是對于算法的不熟

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論