1. 程式人生 > >MD5演算法產生多少位的訊息摘要?

MD5演算法產生多少位的訊息摘要?

     在軟體開發的使用者註冊功能中常出現MD5加密這個概念,這個概念有一定的誤導性。嚴格來說:MD5還有sha-1、 RIPEMD以及Haval等不能算是加密演算法(雖然常用於把密碼變成“密文”),他們只是雜湊演算法,或者叫摘要演算法。加密對應解密這個概念,加密演算法包括:DES、3DES、IDEA、 RSA、AES等。

     要弄懂這兩類演算法的區別,最本質的方式就是把這兩類演算法的步驟搞懂,但這需要大量的時間。通過兩類演算法的表現可以對他們的區別有個大體的瞭解:
     1.MD5演算法除了註冊時對使用者密碼進行MD5運算以外,還常用於驗證下載的軟體的完整性(linux下面md5sum命令可以支援這一典型應用),常用電驢等下載視訊和軟體的使用者應該知道這一點。MD5運算後的長度是固定的,它顯然不可能包含視訊、軟體等源資料的全部資訊。對於加密演算法來說,加密後的密文是包含原始資料所有資訊的,只是不能被直接讀懂變的安全了。
     2.加密演算法是一種通訊體系,經常用於分散式系統。它的目標是資料經過傳輸後只能被特定的有金鑰的人讀懂,包含加密演算法和金鑰2個要素。而MD5等雜湊演算法卻不包含運算後的資料只能被特定人讀懂的目標,它只讓機器讀懂。當用於加密時,它加密後的資料對所有人一視同仁,且沒有金鑰機制,沒有好的方法從加密後的資料得到原始資料,從而保證資料的安全。它並不是通訊機制,它是不可逆的。另外它的驗證資料完整性的功能上面已經提到,我想,很多有心人最初正是從這一點意識到這兩類演算法的區別把?

     典型應用:這裡再加一個加密演算法的典型應用就可以了,例如所有涉及到IC卡的系統,銀行卡、公交卡、市民卡等等。在數字簽名技術中,同時使用到雜湊演算法和加密演算法,見阮一峰的《數字簽名是什麼?》。
     共同點:都屬於電腦保安的範疇,都是為了保證資料安全。

2.  資料加密和資料完整性

     實際上,數字簽名是保證資料完整性的,但它不保證資料加密,不保證資料傳輸途中無人嗅探竊聽。

    好比一輛敞篷大貨車從A開到B,中途沒有灑落任何東西,完整性得到了保證。但是車上有什麼東西也被路人看光光。

    資料加密是從A到B建了一條虛擬隧道,貨車在裡面開,路人誰也不知道是什麼東西。

     車子到了B後,送貨的人給出自己的身份證,證明自己的確是從A來的。收貨的人可以選擇相信這個身份證。也可以把身份證放到自己的身份證校驗儀查詢,看看是不是公安部發的真的身份證。

    如果你的身份證校驗儀(CA)已經是假的了,那就啥都別說了,重灌系統吧。