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

正文內容

密碼學課程設計報告-資料下載頁

2025-01-21 16:57本頁面
  

【正文】 partLen) { memcpy(amp。_buffer[index], input, partLen)。 transform(_buffer)。 //對當前輸入的剩余字節(jié)做轉換 for (i = partLen。 i + 63 length。 i += 64) { transform(amp。input[i])。 } index = 0。 } else { i = 0。 } memcpy(amp。_buffer[index], amp。input[i], length i)。}(4)獲取加密的最終結果:void MD5::final() { byte bits[8]。 uint32 oldState[4]。 uint32 oldCount[2]。 uint32 index, padLen。 //保存當前狀態(tài) memcpy(oldState, _state, 16)。 memcpy(oldCount, _count, 8)。 //將要被轉換的信息的bits長度拷貝到bits中 encode(_count, bits, 8)。//計算所有的bits長度的字節(jié)數(shù)的模64 index = (uint32)((_count[0] 3) amp。 0x3f)。 //計算需要填充的字節(jié)數(shù),padLen的取值范圍在164之間 padLen = (index 56) ? (56 index) : (120 index)。 //這一次函數(shù)笤俑絕對不會再導致MD5Transform的被調用,因為這一次不會填滿512bits update(PADDING, padLen)。 update(bits, 8)。 //將結果保存到digest中 encode(_state, _digest, 16)。 memcpy(_state, oldState, 16)。 memcpy(_count, oldCount, 8)。} 程序運行結果如下所示 安全性分析MD5算法中,輸出的每一位都是輸入的每一位的函數(shù),邏輯函數(shù)F、G、H、I的復雜迭代使得輸出對輸入的依賴非常小。但是,Berson已經(jīng)證明,對單輪的MD5算法,利用差分密碼分析,可以在合理時間內找出摘要相同的兩條報文。MD5算法抗密碼分析的能力較弱,對MD5的生日攻擊所需代價是需要試驗264個消息。2004年8月17日,在美國加州圣巴巴拉召開的美密會(Crypto2004)上,中國的王小云、馮登國、來學嘉、于紅波4位學者宣布,只需1小時就可找出MD5的碰撞。(利用差分分析) 五、 公鑰密碼算法RSA, 在1978年發(fā)現(xiàn)了一種用數(shù)論構造雙鑰體制的方法,稱作MIT體制,后來被廣泛稱之為RSA體制。它既可用于加密、又可用于數(shù)字簽名。RSA算法的安全性基于數(shù)論中大整數(shù)分解的困難性。RSA算法,它通常是先生成一對RSA 密鑰,其中之一是保密密鑰,由用戶保存;另一個為公開密鑰,可對外公開,甚至可在網(wǎng)絡服務器中注冊。為提高保密強度,RSA密鑰至少為500位長,一般推薦使用1024位。這就使加密的計算量很大。為減少計算量,在傳送信息時,常采用傳統(tǒng)加密方法與公開密鑰加密方法相結合的方式,即信息采用改進的DES或IDEA對話密鑰加密,然后使用RSA密鑰加密對話密鑰和信息摘要。對方收到信息后,用不同的密鑰解密并可核對信息摘要。 RSA算法是第一個能同時用于加密和數(shù)字簽名的算法,也易于理解和操作。RSA是被研究得最廣泛的公鑰算法,從提出到現(xiàn)在的三十多年里,經(jīng)歷了各種攻擊的考驗,逐漸為人們接受,普遍認為是目前最優(yōu)秀的公鑰方案之一。 算法原理及設計思想-密鑰產(chǎn)生KG( ):(1) 獨立地選取兩大素數(shù)p和q(各100~200位十進制數(shù)字)(2) 計算 n=pq,其歐拉函數(shù)值j(n)=(p-1)(q-1)(3) 隨機選一整數(shù)e,1163。ej(n),gcd(j(n), e)=1(4) (4)在模j(n)下,計算e的有逆元d=e 1 mod j(n) (5) (5)以n,e為公鑰。私鑰為d。(p, q不再需要,可以銷毀。)-加密E( )和解密D( ):(1)加密將明文分組,各組對應的十進制數(shù)小于nc=me mod n(2)解密 m=cd mod n:RSA算法滿足公開密鑰加密的要求,必須符合下列條件(1)有可能找到e, d, n的值,使得對所有Mn有Med mod n = M(2)對于所有Mn的值,要計算Me和Cd是相對容易的(3)在給定e和n時,計算出d是不可行的(4)幾個關系φ(n) = φ(pq) = φ(p)φ(q) = (p1)(q1), p,q are primeed mod φ(n)=1, ed = kφ(n) + 1, 即ed≡1 mod φ(n), d≡e1 mod φ(n)//求b模a的乘法逆,擴展Euclidian算法 long double inverse(long double a,long double b) { long double a0,b0,t0,t,q,r。//用t返回要求的a的值 a0=a。 b0=b。 t0=0。t=1。q=floor(a0/b0)。//取整 r=a0q*b0。 while(r0){ long double temp。temp=fmod((t0q*t),a)。t0=t。t=temp。a0=b0。 b0=r。q=floor(a0/b0)。r=a0q*b0。 }//選擇的b不滿足 if(b0!=1)coutFailed!Please check b you entered.endl。 //gcd(mult_n,b)=1else return t。}//處理用戶輸入的字符串,用RSA密碼體制加解密void enc_dec(double tt,double nn) {double t=tt。//傳遞的a或b double n=nn。//傳遞的n,n=p*qdouble ci,ch。//中間變量,用于數(shù)據(jù)類型間的轉換 string input。//字符串類型,用于存儲輸入的字符串 //用戶輸入要加解密的字符串 coutendlPlease enter your message:。 cininput。//用戶輸入要加密的字符串,本程序只處理連續(xù)大小寫英文字母 //處理并儲存結果 const int lenth=()。//輸入字符串的字符數(shù) char output[2000]。//用字符數(shù)組來存儲處理好的字符串 int i。for(i=0。ilenth。++i)//逐字符處理 {//如果輸入的字符是大寫字母 if(input[i]=39。a39。amp。amp。input[i]=39。z39。) {ci=input[i]。ci=97。//編碼 ch=fmod(pow(ci,t),n)。//加解密算法 while(ch25){ ch=fmod(ch,26)。}ch+=97。//解碼 } //如果輸入的字符是小寫字母 else if(input[i]=39。A39。amp。amp。input[i]=39。Z39。{ ci=input[i]。 ci=65。//編碼ch=fmod(pow(ci,t),n)。//加解密算法 while(ch25){ ch=fmod(ch,26) ch+=65。//解碼 }output[i]=char(ch)。//把處理好的字符存入數(shù)組 }程序可以生成公鑰和私鑰,還可以加密和解密信息。RSA的安全性依賴于大數(shù)分解,但是否等同于大數(shù)分解一直未能得到理論上的證明,因為沒有證明破解 RSA就一定需要作大數(shù)分解。假設存在一種無須分解大數(shù)的算法,那它肯定可以修改成為大數(shù)分解算法。目前, RSA 的一些變種算法已被證明等價于大數(shù)分解。不管怎樣,分解n是最顯然的攻擊方法。現(xiàn)在,人們已能分解多個十進制位的大素數(shù)。因此,模數(shù)n 必須選大一些,因具體適用情況而定。n的長度應該介于1024bit到2048bit之間。針對RSA最流行的攻擊一般是基于大數(shù)因數(shù)分解。1999年,RSA155(512 bits)被成功分解,花了五個月時間(約8000 MIPS 年)和224 CPU hours C916計算機上完成 。 2002年,RSA158也被成功因數(shù)分解。 2009年12月12日,編號為 RSA768 (768 bits, 232 digits)數(shù)也被成功分解。 北京時間2月15日上午消息,據(jù)《紐約時報》周二報道,歐美數(shù)學家和密碼學家偶然發(fā)現(xiàn),目前被全世界廣泛應用的公鑰加密算法RSA存在漏洞。 他們發(fā)現(xiàn)。也就是說,或許有人可以找出產(chǎn)生公鑰的秘密質數(shù)。 該研究項目是由美國獨立密碼學家James K. Lenstra牽頭的。他們的報告稱:“我們發(fā)現(xiàn)絕大多數(shù)公鑰都是按理論產(chǎn)生的,但是每一千個公鑰中會有兩個存在安全隱患?!?報告稱,為防止有人利用該漏洞,有問題的公鑰已從公眾訪問的數(shù)據(jù)庫中移除。為確保系統(tǒng)的安全性,網(wǎng)站需要在終端做出改變。RSA的選擇密文攻擊RSA在選擇密文攻擊面前很脆弱。一般攻擊者是將某一信息作一下偽裝( Blind),讓擁有私鑰的實體簽署。然后,經(jīng)過計算就可得到它所想要的信息。這個固有的問題來自于公鑰密碼系統(tǒng)的最有用的特征每個人都能使用公鑰。但從算法上無法解決這一問題,主要措施有兩條:一條是采用好的公鑰協(xié)議,保證工作過程中實體不對其他實體任意產(chǎn)生的信息解密,不對自己一無所知的信息簽名;另一條是決不對陌生人送來的隨機文檔簽名,簽名時首先使用OneWay HashFunction 對文檔作HASH處理,或同時使用不同的簽名算法。RSA的公共模數(shù)攻擊若系統(tǒng)中共有一個模數(shù),只是不同的人擁有不同的e和d,系統(tǒng)將是危險的。最普遍的情況是同一信息用不同的公鑰加密,這些公鑰共模而且互質,那么該信息無需私鑰就可得到恢復。六、設計體會 此次《密碼學課程設計》實驗課持續(xù)的時間比較長,自己感覺收獲還是很多的,對密碼學中比較經(jīng)典的幾類密碼算法又熟悉了一遍,并且通過編程的方式進行了驗證。 這次的課程設計我的時間分配大致是這樣的,針對不同的算法分配不同的時間,比如要編寫DES給自己23周的時間,但是實際上花費的時間更多,覺得自己在理論方面并沒有太大問題,算法的原理過程都比較熟悉,對自己來說比較困難的就是讓理論變成編程過程中所對應的函數(shù)和算法,由于自己動手能力不是很好,再自己編寫了兩周后最后決定在網(wǎng)上找資料,研究別人的算法,將程序讀懂,我覺得這不是很困難,我在讀懂程序的基礎上,又按自己的思路對里面的函數(shù)及算法進行改進,這樣下來完成一個算法要4周多的時間還要包括課下自己的練習。但是我覺得很值得,我覺得在這門課里面我學到了很多,對以前沒有深刻理解的知識也變得熟悉起來,比如C++中指針的使用,還有移位操作及異或操作等等。還學到了如何將字符數(shù)組轉化為字節(jié)數(shù)組等等。 對于這門課我覺得自己花費的時間和精力還是很多的,因為自己想以后從事密碼學方面的研究,在該課程設計的過程中,我還又把老師原來上課給的課件和好多的資料也瀏覽了一遍,當初老師真的給我們很多有用的資料,就是以前自己沒有好好利用,在以后的學習中,我會更加努力,在現(xiàn)有的基礎上加深對更多密碼算法的理解,爭取在以后的學習中做出更大的成績。33
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1