一、md5加密演算法
md5的全稱是message-digest algorithm 5(資訊-摘要演算法),在90年代初由mit laboratory for computer science和rsa data security inc的ronald l. rivest開發出來,經md2、md3和md4發展而來。
2023年,rivest開發出技術上更為趨近成熟的md5演算法。它在md4的基礎上增加了"安全-帶子"(safety-belts)的概念。雖然md5比md4稍微慢一些,但卻更為安全。這個演算法很明顯的由四個和md4設計有少許不同的步驟組成。在md5演算法中,資訊-摘要的大小和填充的必要條件與md4完全相同。den boer和bosselaers曾發現md5演算法中的假衝突(pseudo-collisions),但除此之外就沒有其他被發現的加密後結果了。
van oorschot和wiener曾經考慮過乙個在雜湊中暴力搜尋衝突的函式(brute-force hash function),而且他們猜測乙個被設計專門用來搜尋md5衝突的機器(這台機器在2023年的製造成本大約是一百萬美元)可以平均每24天就找到乙個衝突。但單從2023年到2023年這10年間,竟沒有出現替代md5演算法的md6或被叫做其他什麼名字的新演算法這一點,我們就可以看出這個瑕疵並沒有太多的影響md5的安全性。上面所有這些都不足以成為md5的在實際應用中的問題。並且,由於md5演算法的使用不需要支付任何版權費用的,所以在一般的情況下(非絕密應用領域。但即便是應用在絕密領域內,md5也不失為一種非常優秀的中間技術),md5怎麼都應該算得上是非常安全的了。
在一些初始化處理後,md5以512位分組來處理輸入文字,每一分組又劃分為16個32位子分組。演算法的輸出由四個32位分組組成,將它們級聯形成乙個128位雜湊值。
首先填充訊息使其長度恰好為乙個比512位的倍數僅小64位的數。填充方法是附乙個1在訊息後面,後接所要求的多個0,然後在其後附上64位的訊息長度(填充前)。這兩步的作用是使訊息長度恰好是512位的整數倍(演算法的其餘部分要求如此),同時確保不同的訊息在填充後不相同。
四個32位變數初始化為:
a=0x01234567
b=0x89abcdef
c=0xfedcba98
d=0x76543210
它們稱為鏈結變數(chaining variable)
接著進行演算法的主迴圈,迴圈的次數是訊息中512位訊息分組的數目。
將上面四個變數複製到另外的變數中:a到a,b到b,c到c,d到d。
主迴圈有四輪(md4只有三輪),每輪很相似。第一輪進行16次操作。每次操作對a,b,c和d中的其中三個作一次非線性函式運算,然後將所得結果加上第四個變數,文字的乙個子分組和乙個常數。再將所得結果向右環移乙個不定的數,並加上a,b,c或d中之一。最後用該結果取代a,b,c或d中之一。
1、對一段資訊生成資訊摘要,該摘要對該資訊具有唯一性,可以作為數字簽名。
2、用於驗證檔案的有效性(是否有丟失或損壞的資料),
3、對使用者密碼的加密,
4、在雜湊函式中計算雜湊值
從上邊的主要用途中我們看到,由於演算法的某些不可逆特徵,在加密應用上有較好的安全性。通過使用md5加密演算法,我們輸入乙個任意長度的位元組串,都會生成乙個128位的整數。所以根據這一點md5被廣泛的用作密碼加密。下面我就像大家演示一下怎樣進行密碼加密。
二、rsa加密演算法
參考文獻:
[1][2]
[3][4]
[5]
ArcSDE的二種連線方式
解釋一 arcsde的二種連線方式 估且稱為客戶端負載連線方式和伺服器端負載連線方式。二種連線方式的設定 伺服器端負載連線 最常用的連線方式 伺服器名稱 server sde伺服器的主機名稱。服務埠 service 安裝sde時選擇的埠。預設是5151或esri sde 資料庫 database 根...
C語言字串二種方式定義
1.字串的定義形式有兩種 1 使用字元陣列來儲存 將字串資料的每1個字元儲存到字元陣列的元素中,追加1個 0 表示結束.char name jack 2 使用字元指標來儲存 直接為字元指標初始化1個字串資料.char name jack 不管是用上述那種方法,在字串的最後都有 0以代表字串結束。計算...
ArcSDE的二種連線方式解釋
解釋一 arcsde的二種連線方式 估且稱為客戶端負載連線方式和伺服器端負載連線方式。二種連線方式的設定 1.伺服器端負載連線 最常用的連線方式 伺服器名稱 server sde伺服器的主機名稱。服務埠 service 安裝sde時選擇的埠。預設是5151或esri sde 資料庫 database...