freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于rsa的數(shù)字簽名的設(shè)計(jì)與實(shí)現(xiàn)-資料下載頁

2024-12-02 15:50本頁面

【導(dǎo)讀】數(shù)字簽名是起到身份認(rèn)證、核準(zhǔn)數(shù)據(jù)完整性的一種信息安全技術(shù)。RSA數(shù)字簽名體制使用的是RSA公開密鑰密碼算法進(jìn)行數(shù)。六,分析了RSA數(shù)字簽名的安全性,指出了RSA數(shù)字簽名的發(fā)展方向。RSA算法介紹與應(yīng)用現(xiàn)狀.........

  

【正文】 char x[64]={0}。 //循環(huán) , 將原始信息以 64字節(jié)為一組拆分進(jìn)行處理 for( i=0,Index=1。i()。i++) { x[++Index]=WriteMessage[i]。 if(Index==63) { Index=1。 //將 64字節(jié)位轉(zhuǎn)換為 16個(gè)字節(jié) Transform(x)。 } } //將寄存器 ABCD的最終值轉(zhuǎn)換為 16進(jìn)制返回給用戶 return ToHex(UpperCase)。 數(shù)字簽名的設(shè)計(jì)實(shí)現(xiàn) 數(shù)字簽名的理論實(shí)現(xiàn)流程圖如圖 33所示 , 數(shù)字簽名,就是通過在數(shù)據(jù)單元上附加數(shù)據(jù) ,或?qū)?shù)據(jù)單元進(jìn)行加密變換,從而使接收者可以確認(rèn)數(shù)據(jù)來源和完整性。數(shù)字簽名是防止他人對傳輸?shù)奈募M(jìn)行破壞,以及確定發(fā)信人的身份的手第 12 頁 共 23 頁 段。數(shù)字簽名中的加密算法就是應(yīng)用的 RSA加密原理,而它的驗(yàn)證算法則是應(yīng)用的 RSA解密原理。 圖 33 數(shù)字簽名的實(shí)現(xiàn)流程 RSA 的加密、解密過程都為求一個(gè)整數(shù)的整數(shù)次冪,再取模。如果按其含義直接計(jì)算,則中間結(jié)果非常大,有可能超出計(jì)算機(jī)所允許的整數(shù)取值范圍。為了減小中間結(jié)果和提高加、解密運(yùn)算中指數(shù)運(yùn)算的有效性, 本設(shè)計(jì)采用了快速指數(shù)算法。它的運(yùn)算過程為( 假如要算 a^m mod n) : 1) 將 m表示為二進(jìn)制的形式 ; 2) 初始化 c=0, d=1, c 在這里表示指數(shù)的部分結(jié)果,它的終值即為指數(shù) m,d是中間結(jié)果,它的終值即為所求結(jié)果; 3) 從二進(jìn)制數(shù)的最高位到最低位開始 對每一位都用公式 1 進(jìn)行 運(yùn)算, 得到的 d 為該步的結(jié)果, 公式 1: c=2*c。d=fmod(d*d,n)。 4)若二進(jìn)制數(shù)是 1,則在上面的運(yùn)算后繼續(xù)以下運(yùn)算: c=c+1。d=fmod(d*a,n)。得到的結(jié)果 d 才為該步的最終結(jié)果。 數(shù)字簽名主要 實(shí)現(xiàn) 過程 的 代碼如下: //消息摘要, 8 位為一組 一個(gè)字符一組 開始 得到數(shù)字簽名 得到消息摘要 MD 用私鑰 d 加密 MD 結(jié)束 第 13 頁 共 23 頁 char message[200]。 //從文本框中得到消息摘要 (message,200)。 len=strlen(message)。 char showstr[1000]=。 int NO_BITS=32。 double c=0,d=1。 char bits[100]。 double n=(double)m_n。 unsigned char ch。 double data。//19。 long i,k=NO_BITS。 int sizeof_d=sizeof(double)。 //將 十進(jìn)制數(shù)私鑰 d轉(zhuǎn)換為二進(jìn)制 D_to_B(m_d,32,bits)。 //得到合適的字節(jié) GetOnlyProperBits(bits)。 k=NO_BITS = strlen(bits)1。 for(int ii=0。iilen。ii++) { // 從 message 中讀取字符放入 39。data39。中 ch=message[ii]。 data =(double)ch。 //計(jì)算 ((data)^d mod n) 快速指數(shù)算法的實(shí)現(xiàn) c=0。d=1。 for(i=k。i=0。i) { c=2*c。 d=fmod(d*d,n)。 if(bits[NO_BITSi] == 39。139。) { c=c+1。 d=fmod(data*d,n)。 } 第 14 頁 共 23 頁 } // 從 39。d39。中讀取字符放入 result 中 result[ii]=d。 //把字符串變?yōu)槭M(jìn)制數(shù)后連接字符串 strcat(showstr,longtohex(d))。 }//結(jié)束循環(huán) //顯示結(jié)果 (showstr)。 } //字符串變?yōu)?16進(jìn)制數(shù)的 函數(shù)的實(shí)現(xiàn) longtohex(long x) { char str[8]。 int i=0。 //商 int a。 //余數(shù) int b。 long tt=x。 while(tt=16) { a=tt/16。 b=tt%16。 switch(b) { case 0 : str[i]=39。039。 break。 case 1 : str[i]=39。139。 break。 case 2 : str[i]=39。239。 break。 case 3 : str[i]=39。339。 break。 case 4 : str[i]=39。439。 break。 case 5 : str[i]=39。539。 break。 case 6 : str[i]=39。639。 break。 case 7 : str[i]=39。739。 break。 case 8 : str[i]=39。839。 break。 第 15 頁 共 23 頁 case 9 : str[i]=39。939。 break。 case 10 : str[i]=39。A39。 break。 case 11 : str[i]=39。B39。 break。 case 12 : str[i]=39。C39。 break。 case 13 : str[i]=39。D39。 break。 case 14 : str[i]=39。E39。 break。 case 15 : str[i]=39。F39。 break。 }。 i++。 tt=a。 } str[i]=39。\039。 strrev(str)。 return str。 } 驗(yàn)證數(shù)字簽名的設(shè)計(jì)與實(shí)現(xiàn) 圖 34 驗(yàn)證數(shù)字簽名流程 驗(yàn)證數(shù)字簽名的正確與成功性,主要是比較得到的兩 次 消息摘要是否一樣,得到數(shù)字簽名 用公鑰 e 解密數(shù)字簽名 得到消息摘要(解密信息) 開始 結(jié)束 第 16 頁 共 23 頁 如果驗(yàn)證方用簽名方的公鑰解密得到消息摘要(即是本設(shè)計(jì)中得到的解密信息)和他自己計(jì)算得到的消息摘要(在本系統(tǒng)中為第一次計(jì)算得到 的消息摘要)是一樣的,則證明簽名是正確的,沒有被篡改或是冒充, 驗(yàn)證簽名的原理則是根 據(jù) RSA的解密算法,具體的理論流程圖如圖 34所示:(在本設(shè)計(jì)中簽名和驗(yàn)證簽名都在同一界面實(shí)現(xiàn),不進(jìn)行文件的雙方傳輸) 驗(yàn)證數(shù)字簽名的過程時(shí)應(yīng)用的解密算法是 RSA的解密原理,而 RSA的解密過程也應(yīng)用了求一個(gè)整數(shù)的整數(shù)次冪,再取模的運(yùn)算。在此也采用了快速指數(shù)算法,具體的算法過程同 RSA的加密過程中應(yīng)用的快速指數(shù)算法是一樣的。 驗(yàn)證數(shù)字簽名 主要 實(shí)現(xiàn) 過程的代碼 如下: int NO_BITS。 double c=0,d=1。 char bits[100]。 double n=(double)m_n。 double data。//19。 long i,k。 int sizeof_d=sizeof(double)。 //用于存儲(chǔ)解密信息 char message[200]。 //將 十進(jìn)制數(shù)公鑰 e轉(zhuǎn)換為二進(jìn)制 D_to_B(m_e,32,bits)。 GetOnlyProperBits(bits)。 k=NO_BITS = strlen(bits)1。 for(int j=0。jlen。j++) { //從 result 中讀取字符放入 39。data39。中 data=result[j]。 //計(jì)算 ((data)^e mod n) 快速指數(shù)算法的實(shí)現(xiàn) c=0。d=1。 for(i=k。i=0。i) { c=2*c。 d=fmod(d*d,n)。 if(bits[NO_BITSi] == 39。139。) { 第 17 頁 共 23 頁 c=c+1。 d=fmod(data*d,n)。 } }//結(jié)束循環(huán) //從 39。d39。中讀取字符放入 message 中 message[j]=d。 } //顯示結(jié)果 (message)。 } RSA 數(shù)字簽名的運(yùn)行結(jié)果 圖 35 RSA數(shù)字簽名的運(yùn)行結(jié)果
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1