① MD5、sha1、sha256分別輸出多少位
MD5 SHA1 SHA256 這3種本質都是摘要函數,它們的長度 MD5 是 128 位,SHA1 是 160 位 ,SHA256 是 256 位。
MD5以512位分組來處理輸入的信息,且每一分組又被劃分為16個32位子分組,經過了一系列的處理後,演算法的輸出由四個32位分組組成,將這四個32位分組級聯後將生成一個128位散列值。
對於長度小於2^64位的消息,SHA1會產生一個160位的消息摘要。當接收到消息的時候,這個消息摘要可以用來驗證數據的完整性。
哈希值用作表示大量數據的固定大小的唯一值。數據的少量更改會在哈希值中產生不可預知的大量更改。SHA256 演算法的哈希值大小為 256 位。
(1)md5演算法的信息摘要長度擴展閱讀
MD5演算法的應用:
1、一致性驗證
MD5可以為任何文件(不管其大小、格式、數量)產生一個同樣獨一無二的「數字指紋」,如果任何人對文件做了任何改動,其MD5值也就是對應的「數字指紋」都會發生變化。
利用MD5演算法來進行文件校驗的方案被大量應用到軟體下載站、論壇資料庫、系統文件安全等方面。
2、數字簽名
MD5的典型應用是對一段Message(位元組串)產生fingerprint(指紋),以防止被「篡改」。
舉個例子,你將一段話寫在一個叫 readme.txt文件中,並對這個readme.txt產生一個MD5的值並記錄在案,然後你可以傳播這個文件給別人,別人如果修改了文件中的任何內容,你對這個文件重新計算MD5時就會發現(兩個MD5值不相同)。
如果再有一個第三方的認證機構,用MD5還可以防止文件作者的「抵賴」,這就是所謂的數字簽名應用。
3、安全訪問認證
MD5還廣泛用於操作系統的登陸認證上,如Unix、各類BSD系統登錄密碼、數字簽名等諸多方面。如在Unix系統中用戶的密碼是以MD5(或其它類似的演算法)經Hash運算後存儲在文件系統中。
② md5是什麼
MD5信息摘要演算法(英語:MD5 Message-Digest Algorithm),一種被廣泛使用的密碼散列函數,可以產生出一個128位(16位元組)的散列值(hash value),用於確保信息傳輸完整一致。
MD5由美國密碼學家羅納德·李維斯特(Ronald Linn Rivest)設計,於1992年公開,用以取代MD4演算法。這套演算法的程序在 RFC 1321 標准中被加以規范。
1996年後該演算法被證實存在弱點,可以被加以破解,對於需要高度安全性的數據,專家一般建議改用其他演算法,如SHA-2。2004年,證實MD5演算法無法防止碰撞(collision),因此不適用於安全性認證,如SSL公開密鑰認證或是數字簽名等用途。
用於密碼管理
當我們需要保存某些密碼信息以用於身份確認時,如果直接將密碼信息以明碼方式保存在資料庫中,不使用任何保密措施,系統管理員就很容易能得到原來的密碼信息,這些信息一旦泄露, 密碼也很容易被破譯。
為了增加安全性,有必要對資料庫中需要保密的信息進行加密,這樣,即使有人得到了整個資料庫,如果沒有解密演算法,也不能得到原來的密碼信息。MD5演算法可以很好地解決這個問題,因為它可以將任意長度的輸入串經過計算得到固定長度的輸出,而且只有在明文相同的情況下。
才能等到相同的密文,並且這個演算法是不可逆的,即便得到了加密以後的密文,也不可能通過解密演算法反算出明文。
③ md5計算出來的報文是多少位
linux下查詢文件的MD5值:md5sum xxx.iso.md5 MD5演算法常常被用來驗證網路文件傳輸的完整性,防止文件被人篡改。MD5全稱是報文摘要演算法(Message-Digest Algorithm 5),此演算法對任意長度的信息逐位進行計算,產生一個二進制長度為128位(十六進制長度就是32位)的「指紋」(或稱「報文摘要」),不同的文件產生相 同的報文摘要的可能性是非常非常之小的。 在linux或Unix上,md5sum是用來計算和校驗文件報文摘要的工具程序。一般來說,安裝了Linux後,就會有md5sum這個工具,直接在命令行終端直接運行。可以用下面的命令來獲取md5sum命令幫助 man md5sum 使用md5sum來產生指紋(報文摘要)命令如下:md5sum file > file.md5 或者 md5sum file >>file.md5 註: > 和 >> 的區別在於: > 表示把由file文件產生的摘要重定向到文件file.md5,但是會覆蓋file.md5裡面的內容;而 >> 則將輸出的摘要附加到file.md5文件的後面。也可以把多個文件的報文摘要輸出到一個md5文件中,這要使用通配符*,比如某目錄下有幾個iso文 件,要把這幾個iso文件的摘要輸出到iso.md5文件中,命令如下:md5sum *.iso > iso.md5 使用md5報文摘要驗證文件,方法有二: a、把下載的文件file和該文件的file.md5報文摘要文件放在同一個目錄下,然後用如下命令進行驗證:md5sum -c file.md5 然後如果驗證成功,則會輸出:正確; b、下載了文件file,然後運行下面的命令:md5sum file 命令會輸出一個md5的報文摘要,然後把這個報文摘要直接與file.md5中的內容比較,如果一樣,就說明驗證正確。
④ MD5,sha1,sha256分別輸出多少位啊
MD5輸出128位、SHA1輸出160位、SHA256輸出256位。
1、MD5消息摘要演算法(英語:MD5 Message-Digest Algorithm),一種被廣泛使用的密碼散列函數,可以產生出一個128位(16位元組)的散列值(hash value),用於確保信息傳輸完整一致。
2、SHA1安全哈希演算法(Secure Hash Algorithm)主要適用於數字簽名標准 裡面定義的數字簽名演算法。對於長度小於2^64位的消息,SHA1會產生一個160位的消息摘要。
3、sha256哈希值用作表示大量數據的固定大小的唯一值。數據的少量更改會在哈希值中產生不可預知的大量更改。SHA256 演算法的哈希值大小為 256 位。
(4)md5演算法的信息摘要長度擴展閱讀:
MD5應用:
1、一致性驗證
MD5的典型應用是對一段信息產生信息摘要,以防止被篡改。具體來說文件的MD5值就像是這個文件的「數字指紋」。每個文件的MD5值是不同的,如果任何人對文件做了任何改動,其MD5值也就是對應的「數字指紋」就會發生變化。
比如下載伺服器針對一個文件預先提供一個MD5值,用戶下載完該文件後,用我這個演算法重新計算下載文件的MD5值,通過比較這兩個值是否相同,就能判斷下載的文件是否出錯,或者說下載的文件是否被篡改了。
2、數字簽名
MD5的典型應用是對一段Message(位元組串)產生fingerprint(指紋),以防止被「篡改」。
例子:將一段話寫在一個叫 readme.txt文件中,並對這個readme.txt產生一個MD5的值並記錄在案,然後可以傳播這個文件給,如果修改了文件中的任何內容,你對這個文件重新計算MD5時就會發現(兩個MD5值不相同)。
如果再有一個第三方的認證機構,用MD5還可以防止文件作者的「抵賴」,這就是所謂的數字簽名應用。
3、安全訪問認證
MD5還廣泛用於操作系統的登陸認證上,如Unix、各類BSD系統登錄密碼、數字簽名等諸多方面。如在Unix系統中用戶的密碼是以MD5(或其它類似的演算法)經Hash運算後存儲在文件系統中。
當用戶登錄的時候,系統把用戶輸入的密碼進行MD5 Hash運算,然後再去和保存在文件系統中的MD5值進行比較,進而確定輸入的密碼是否正確。
即使暴露源程序和演算法描述,也無法將一個MD5的值變換回原始的字元串,從數學原理上說,是因為原始的字元串有無窮多個,這有點象不存在反函數的數學函數。
⑤ MD5演算法原理及實現
散列函數,也稱作哈希函數,消息摘要函數,單向函數或者雜湊函數。散列函數主要用於驗證數據的完整性。通過散列函數,可以創建消息的「數字指紋」,消息接收方可以通過校驗消息的哈希值來驗證消息的完整性,防止消息被篡改。散列函數具有以下特性:
任何消息經過散列函數處理後,都會產生一個唯一的散列值,這個散列值可以用來驗證消息的完整性。計算消息散列值的過程被稱為「消息摘要」,計算消息散列值的演算法被稱為消息摘要演算法。常使用的消息摘要演算法有:MD—消息摘要演算法,SHA—安全散列演算法,MAC—消息認證碼演算法。本文主要來了解MD演算法。
MD5演算法是典型的消息摘要演算法,它是由MD4,MD3和MD2演算法演變而來。無論是哪一種MD演算法,其原理都是接受一個任意長度的消息並產生一個128位的消息摘要。如果把得到的消息摘要轉換成十六進制字元串,則會得到一個32位元組長度的字元串,我們平常見到的大部分MD數字指紋就是一個長度為32的十六進制字元串。
假設原始消息長度是b(以bit為單位),注意這里b可以是任意長度,並不一定要是8的整數倍。計算該消息MD5值的過程如下:
在計算消息的MD5值之前,首先對原始信息進行填充,這里的信息填充分為兩步。
第一步,對原始信息進行填充,填充之後,要求信息的長度對512取余等於448。填充的規則如下:假設原始信息長度為b bit,那麼在信息的b+1 bit位填充1,剩餘的位填充0,直到信息長度對512取余為448。這里有一點需要注意,如果原始信息長度對512取余正好等於448,這種情況仍然要進行填充,很明顯,在這時我們要填充的信息長度是512位,直到信息長度對512取余再次等於448。所以,填充的位數最少為1,最大為512。
第二步,填充信息長度,我們需要把原始信息長度轉換成以bit為單位,然後在第一步操作的結果後面填充64bit的數據表示原始信息長度。第一步對原始信息進行填充之後,信息長度對512取余結果為448,這里再填充64bit的長度信息,整個信息恰好可以被512整除。其實從後續過程可以看到,計算MD5時,是將信息分為若干個分組進行處理的,每個信息分組的長度是512bit。
在進行MD5值計算之前,我們先來做一些定義。
下面就是最核心的信息處理過程,計算MD5的過程實際上就是輪流處理每個信息分組的過程。
MD5演算法實現如下所示。
這里也和Java提供的標准MD5演算法進行了對比,通過測試可以看到該MD5計算的結果和Java標准MD5演算法的計算結果是一樣的。