MD5加密算法簡(jiǎn)介
創(chuàng)新互聯(lián)建站長(zhǎng)期為近1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為天壇街道企業(yè)提供專業(yè)的成都做網(wǎng)站、網(wǎng)站設(shè)計(jì),天壇街道網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
一、綜述
MD5的全稱是message-digest algorithm 5(信息-摘要算法),在90年代初由mit laboratory for computer science和rsa data security inc的ronald l. rivest開發(fā)出來,經(jīng)md2、md3和md4發(fā)展而來。它的作用是讓大容量信息在用數(shù)字簽名軟件簽署私人密匙前被"壓縮"成一種保密的格式(就是把一 個(gè)任意長(zhǎng)度的字節(jié)串變換成一定長(zhǎng)的大整數(shù))。不管是md2、md4還是md5,它們都需要獲得一個(gè)隨機(jī)長(zhǎng)度的信息并產(chǎn)生一個(gè)128位的信息摘要。雖然這些 算法的結(jié)構(gòu)或多或少有些相似,但md2的設(shè)計(jì)與md4和md5完全不同,那是因?yàn)閙d2是為8位機(jī)器做過設(shè)計(jì)優(yōu)化的,而md4和md5卻是面向32位的電 腦。這三個(gè)算法的描述和c語言源代碼在internet rfcs 1321中有詳細(xì)的描述(),這是一份最權(quán)威的文檔,由ronald l. rivest在1992年8月向ieft提交。
rivest在1989年開發(fā)出md2算法。在這個(gè)算法中,首先對(duì)信 息進(jìn)行數(shù)據(jù)補(bǔ)位,使信息的字節(jié)長(zhǎng)度是16的倍數(shù)。然后,以一個(gè)16位的檢驗(yàn)和追加到信息末尾。并且根據(jù)這個(gè)新產(chǎn)生的信息計(jì)算出散列值。后來,rogier 和chauvaud發(fā)現(xiàn)如果忽略了檢驗(yàn)和將產(chǎn)生md2沖突。md2算法的加密后結(jié)果是唯一的--既沒有重復(fù)。
為了加強(qiáng)算法的安全性, rivest在1990年又開發(fā)出md4算法。md4算法同樣需要填補(bǔ)信息以確保信息的字節(jié)長(zhǎng)度加上448后能被512整除(信息字節(jié)長(zhǎng)度mod 512 = 448)。然后,一個(gè)以64位二進(jìn)制表示的信息的最初長(zhǎng)度被添加進(jìn)來。信息被處理成512位damg?rd/merkle迭代結(jié)構(gòu)的區(qū)塊,而且每個(gè)區(qū)塊要 通過三個(gè)不同步驟的處理。den boer和bosselaers以及其他人很快的發(fā)現(xiàn)了攻擊md4版本中第一步和第三步的漏洞。dobbertin向大家演示了如何利用一部普通的個(gè)人電 腦在幾分鐘內(nèi)找到md4完整版本中的沖突(這個(gè)沖突實(shí)際上是一種漏洞,它將導(dǎo)致對(duì)不同的內(nèi)容進(jìn)行加密卻可能得到相同的加密后結(jié)果)。毫無疑問,md4就此 被淘汰掉了。
盡管md4算法在安全上有個(gè)這么大的漏洞,但它對(duì)在其后才被開發(fā)出來的好幾種信息安全加密算法的出現(xiàn)卻有著不可忽視的引導(dǎo)作用。除了md5以外,其中比較有名的還有sha-1、ripe-md以及haval等。
一年以后,即1991年,rivest開發(fā)出技術(shù)上更為趨近成熟的md5算法。它在md4的基礎(chǔ)上增加了"安全-帶子"(safety-belts)的 概念。雖然md5比md4稍微慢一些,但卻更為安全。這個(gè)算法很明顯的由四個(gè)和md4設(shè)計(jì)有少許不同的步驟組成。在md5算法中,信息-摘要的大小和填充 的必要條件與md4完全相同。den boer和bosselaers曾發(fā)現(xiàn)md5算法中的假?zèng)_突(pseudo-collisions),但除此之外就沒有其他被發(fā)現(xiàn)的加密后結(jié)果了。
van oorschot和wiener曾經(jīng)考慮過一個(gè)在散列中暴力搜尋沖突的函數(shù)(brute-force hash function),而且他們猜測(cè)一個(gè)被設(shè)計(jì)專門用來搜索md5沖突的機(jī)器(這臺(tái)機(jī)器在1994年的制造成本大約是一百萬美元)可以平均每24天就找到一 個(gè)沖突。但單從1991年到2001年這10年間,竟沒有出現(xiàn)替代md5算法的md6或被叫做其他什么名字的新算法這一點(diǎn),我們就可以看出這個(gè)瑕疵并沒有 太多的影響md5的安全性。上面所有這些都不足以成為md5的在實(shí)際應(yīng)用中的問題。并且,由于md5算法的使用不需要支付任何版權(quán)費(fèi)用的,所以在一般的情 況下(非絕密應(yīng)用領(lǐng)域。但即便是應(yīng)用在絕密領(lǐng)域內(nèi),md5也不失為一種非常優(yōu)秀的中間技術(shù)),md5怎么都應(yīng)該算得上是非常安全的了。
二、算法的應(yīng)用
md5的典型應(yīng)用是對(duì)一段信息(message)產(chǎn)生信息摘要(message-digest),以防止被篡改。比如,在unix下有很多軟件在下載的時(shí)候都有一個(gè)文件名相同,文件擴(kuò)展名為.md5的文件,在這個(gè)文件中通常只有一行文本,大致結(jié)構(gòu)如:
md5 (tanajiya.tar.gz) = 0ca175b9c0f726a831d895e269332461
這就是tanajiya.tar.gz文件的數(shù)字簽名。md5將整個(gè)文件當(dāng)作一個(gè)大文本信息,通過其不可逆的字符串變換算法,產(chǎn)生了這個(gè)唯一的md5信 息摘要。如果在以后傳播這個(gè)文件的過程中,無論文件的內(nèi)容發(fā)生了任何形式的改變(包括人為修改或者下載過程中線路不穩(wěn)定引起的傳輸錯(cuò)誤等),只要你對(duì)這個(gè) 文件重新計(jì)算md5時(shí)就會(huì)發(fā)現(xiàn)信息摘要不相同,由此可以確定你得到的只是一個(gè)不正確的文件。如果再有一個(gè)第三方的認(rèn)證機(jī)構(gòu),用md5還可以防止文件作者的 "抵賴",這就是所謂的數(shù)字簽名應(yīng)用。
md5還廣泛用于加密和解密技術(shù)上。比如在unix系統(tǒng)中用戶的密碼就是以md5(或其它類似的算 法)經(jīng)加密后存儲(chǔ)在文件系統(tǒng)中。當(dāng)用戶登錄的時(shí)候,系統(tǒng)把用戶輸入的密碼計(jì)算成md5值,然后再去和保存在文件系統(tǒng)中的md5值進(jìn)行比較,進(jìn)而確定輸入的 密碼是否正確。通過這樣的步驟,系統(tǒng)在并不知道用戶密碼的明碼的情況下就可以確定用戶登錄系統(tǒng)的合法性。這不但可以避免用戶的密碼被具有系統(tǒng)管理員權(quán)限的 用戶知道,而且還在一定程度上增加了密碼被破解的難度。
正是因?yàn)檫@個(gè)原因,現(xiàn)在被黑客使用最多的一種破譯密碼的方法就是一種被稱為"跑字 典"的方法。有兩種方法得到字典,一種是日常搜集的用做密碼的字符串表,另一種是用排列組合方法生成的,先用md5程序計(jì)算出這些字典項(xiàng)的md5值,然后 再用目標(biāo)的md5值在這個(gè)字典中檢索。我們假設(shè)密碼的最大長(zhǎng)度為8位字節(jié)(8 bytes),同時(shí)密碼只能是字母和數(shù)字,共26+26+10=62個(gè)字符,排列組合出的字典的項(xiàng)數(shù)則是p(62,1)+p(62,2)….+p (62,8),那也已經(jīng)是一個(gè)很天文的數(shù)字了,存儲(chǔ)這個(gè)字典就需要tb級(jí)的磁盤陣列,而且這種方法還有一個(gè)前提,就是能獲得目標(biāo)賬戶的密碼md5值的情況 下才可以。這種加密技術(shù)被廣泛的應(yīng)用于unix系統(tǒng)中,這也是為什么unix系統(tǒng)比一般操作系統(tǒng)更為堅(jiān)固一個(gè)重要原因。
三、算法描述
對(duì)md5算法簡(jiǎn)要的敘述可以為:md5以512位分組來處理輸入的信息,且每一分組又被劃分為16個(gè)32位子分組,經(jīng)過了一系列的處理后,算法的輸出由四個(gè)32位分組組成,將這四個(gè)32位分組級(jí)聯(lián)后將生成一個(gè)128位散列值。
在md5算法中,首先需要對(duì)信息進(jìn)行填充,使其字節(jié)長(zhǎng)度對(duì)512求余的結(jié)果等于448。因此,信息的字節(jié)長(zhǎng)度(bits length)將被擴(kuò)展至n*512+448,即n*64+56個(gè)字節(jié)(bytes),n為一個(gè)正整數(shù)。填充的方法如下,在信息的后面填充一個(gè)1和無數(shù)個(gè) 0,直到滿足上面的條件時(shí)才停止用0對(duì)信息的填充。然后,在在這個(gè)結(jié)果后面附加一個(gè)以64位二進(jìn)制表示的填充前信息長(zhǎng)度。經(jīng)過這兩步的處理,現(xiàn)在的信息字 節(jié)長(zhǎng)度=n*512+448+64=(n+1)*512,即長(zhǎng)度恰好是512的整數(shù)倍。這樣做的原因是為滿足后面處理中對(duì)信息長(zhǎng)度的要求。
md5中有四個(gè)32位被稱作鏈接變量(chaining variable)的整數(shù)參數(shù),他們分別為:a=0x01234567,b=0x89abcdef,c=0xfedcba98,d=0x76543210。
當(dāng)設(shè)置好這四個(gè)鏈接變量后,就開始進(jìn)入算法的四輪循環(huán)運(yùn)算。循環(huán)的次數(shù)是信息中512位信息分組的數(shù)目。
將上面四個(gè)鏈接變量復(fù)制到另外四個(gè)變量中:a到a,b到b,c到c,d到d。
主循環(huán)有四輪(md4只有三輪),每輪循環(huán)都很相似。第一輪進(jìn)行16次操作。每次操作對(duì)a、b、c和d中的其中三個(gè)作一次非線性函數(shù)運(yùn)算,然后將所得結(jié) 果加上第四個(gè)變量,文本的一個(gè)子分組和一個(gè)常數(shù)。再將所得結(jié)果向右環(huán)移一個(gè)不定的數(shù),并加上a、b、c或d中之一。最后用該結(jié)果取代a、b、c或d中之 一。
以一下是每次操作中用到的四個(gè)非線性函數(shù)(每輪一個(gè))。
f(x,y,z) =(xy)|((~x)z)
g(x,y,z) =(xz)|(y(~z))
h(x,y,z) =x^y^z
i(x,y,z)=y^(x|(~z))
(是與,|是或,~是非,^是異或)
這四個(gè)函數(shù)的說明:如果x、y和z的對(duì)應(yīng)位是獨(dú)立和均勻的,那么結(jié)果的每一位也應(yīng)是獨(dú)立和均勻的。
f是一個(gè)逐位運(yùn)算的函數(shù)。即,如果x,那么y,否則z。函數(shù)h是逐位奇偶操作符。
假設(shè)mj表示消息的第j個(gè)子分組(從0到15),
ff(a,b,c,d,mj,s,ti) 表示 a=b+((a+(f(b,c,d)+mj+ti)
gg(a,b,c,d,mj,s,ti) 表示 a=b+((a+(g(b,c,d)+mj+ti)
hh(a,b,c,d,mj,s,ti) 表示 a=b+((a+(h(b,c,d)+mj+ti)
ii(a,b,c,d,mj,s,ti) 表示 a=b+((a+(i(b,c,d)+mj+ti)
這四輪(64步)是:
第一輪
ff(a,b,c,d,m0,7,0xd76aa478)
ff(d,a,b,c,m1,12,0xe8c7b756)
ff(c,d,a,b,m2,17,0x242070db)
ff(b,c,d,a,m3,22,0xc1bdceee)
ff(a,b,c,d,m4,7,0xf57c0faf)
ff(d,a,b,c,m5,12,0x4787c62a)
ff(c,d,a,b,m6,17,0xa8304613)
ff(b,c,d,a,m7,22,0xfd469501)
ff(a,b,c,d,m8,7,0x698098d8)
ff(d,a,b,c,m9,12,0x8b44f7af)
ff(c,d,a,b,m10,17,0xffff5bb1)
ff(b,c,d,a,m11,22,0x895cd7be)
ff(a,b,c,d,m12,7,0x6b901122)
ff(d,a,b,c,m13,12,0xfd987193)
ff(c,d,a,b,m14,17,0xa679438e)
ff(b,c,d,a,m15,22,0x49b40821)
第二輪
gg(a,b,c,d,m1,5,0xf61e2562)
gg(d,a,b,c,m6,9,0xc040b340)
gg(c,d,a,b,m11,14,0x265e5a51)
gg(b,c,d,a,m0,20,0xe9b6c7aa)
gg(a,b,c,d,m5,5,0xd62f105d)
gg(d,a,b,c,m10,9,0x02441453)
gg(c,d,a,b,m15,14,0xd8a1e681)
gg(b,c,d,a,m4,20,0xe7d3fbc8)
gg(a,b,c,d,m9,5,0x21e1cde6)
gg(d,a,b,c,m14,9,0xc33707d6)
gg(c,d,a,b,m3,14,0xf4d50d87)
gg(b,c,d,a,m8,20,0x455a14ed)
gg(a,b,c,d,m13,5,0xa9e3e905)
gg(d,a,b,c,m2,9,0xfcefa3f8)
gg(c,d,a,b,m7,14,0x676f02d9)
gg(b,c,d,a,m12,20,0x8d2a4c8a)
第三輪
hh(a,b,c,d,m5,4,0xfffa3942)
hh(d,a,b,c,m8,11,0x8771f681)
hh(c,d,a,b,m11,16,0x6d9d6122)
hh(b,c,d,a,m14,23,0xfde5380c)
hh(a,b,c,d,m1,4,0xa4beea44)
hh(d,a,b,c,m4,11,0x4bdecfa9)
hh(c,d,a,b,m7,16,0xf6bb4b60)
hh(b,c,d,a,m10,23,0xbebfbc70)
hh(a,b,c,d,m13,4,0x289b7ec6)
hh(d,a,b,c,m0,11,0xeaa127fa)
hh(c,d,a,b,m3,16,0xd4ef3085)
hh(b,c,d,a,m6,23,0x04881d05)
hh(a,b,c,d,m9,4,0xd9d4d039)
hh(d,a,b,c,m12,11,0xe6db99e5)
hh(c,d,a,b,m15,16,0x1fa27cf8)
hh(b,c,d,a,m2,23,0xc4ac5665)
第四輪
ii(a,b,c,d,m0,6,0xf4292244)
ii(d,a,b,c,m7,10,0x432aff97)
ii(c,d,a,b,m14,15,0xab9423a7)
ii(b,c,d,a,m5,21,0xfc93a039)
ii(a,b,c,d,m12,6,0x655b59c3)
ii(d,a,b,c,m3,10,0x8f0ccc92)
ii(c,d,a,b,m10,15,0xffeff47d)
ii(b,c,d,a,m1,21,0x85845dd1)
ii(a,b,c,d,m8,6,0x6fa87e4f)
ii(d,a,b,c,m15,10,0xfe2ce6e0)
ii(c,d,a,b,m6,15,0xa3014314)
ii(b,c,d,a,m13,21,0x4e0811a1)
ii(a,b,c,d,m4,6,0xf7537e82)
ii(d,a,b,c,m11,10,0xbd3af235)
ii(c,d,a,b,m2,15,0x2ad7d2bb)
ii(b,c,d,a,m9,21,0xeb86d391)
常數(shù)ti可以如下選擇:
在第i步中,ti是4294967296*abs(sin(i))的整數(shù)部分,i的單位是弧度。(4294967296等于2的32次方)
所有這些完成之后,將a、b、c、d分別加上a、b、c、d。然后用下一分組數(shù)據(jù)繼續(xù)運(yùn)行算法,最后的輸出是a、b、c和d的級(jí)聯(lián)。
當(dāng)你按照我上面所說的方法實(shí)現(xiàn)md5算法以后,你可以用以下幾個(gè)信息對(duì)你做出來的程序作一個(gè)簡(jiǎn)單的測(cè)試,看看程序有沒有錯(cuò)誤。
md5 ("") = d41d8cd98f00b204e9800998ecf8427e
md5 ("a") = 0cc175b9c0f1b6a831c399e269772661
md5 ("abc") = 900150983cd24fb0d6963f7d28e17f72
md5 ("message digest") = f96b697d7cb7938d525a2f31aaf161d0
md5 ("abcdefghijklmnopqrstuvwxyz") = c3fcd3d76192e4007dfb496cca67e13b
md5 ("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789") = d174ab98d277d9f5a5611c2c9f419d9f
md5 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = 57edf4a22be3c955ac49da2e2107b67a
如果你用上面的信息分別對(duì)你做的md5算法實(shí)例做測(cè)試,最后得出的結(jié)論和標(biāo)準(zhǔn)答案完全一樣,那我就要在這里象你道一聲祝賀了。要知道,我的程序在第一次編譯成功的時(shí)候是沒有得出和上面相同的結(jié)果的。
四、MD5的安全性
md5相對(duì)md4所作的改進(jìn):
1. 增加了第四輪;
2. 每一步均有唯一的加法常數(shù);
3. 為減弱第二輪中函數(shù)g的對(duì)稱性從(xy)|(xz)|(yz)變?yōu)?xz)|(y(~z));
4. 第一步加上了上一步的結(jié)果,這將引起更快的雪崩效應(yīng);
5. 改變了第二輪和第三輪中訪問消息子分組的次序,使其更不相似;
6. 近似優(yōu)化了每一輪中的循環(huán)左移位移量以實(shí)現(xiàn)更快的雪崩效應(yīng)。各輪的位移量互不相同。
linux下查詢文件的md5值:md5sum
xxx.iso.md5
md5算法常常被用來驗(yàn)證網(wǎng)絡(luò)文件傳輸?shù)耐暾?,防止文件被人篡改。md5全稱是報(bào)文摘要算法(message-digest
algorithm
5),此算法對(duì)任意長(zhǎng)度的信息逐位進(jìn)行計(jì)算,產(chǎn)生一個(gè)二進(jìn)制長(zhǎng)度為128位(十六進(jìn)制長(zhǎng)度就是32位)的“指紋”(或稱“報(bào)文摘要”),不同的文件產(chǎn)生相
同的報(bào)文摘要的可能性是非常非常之小的。
在linux或unix上,md5sum是用來計(jì)算和校驗(yàn)文件報(bào)文摘要的工具程序。一般來說,安裝了linux后,就會(huì)有md5sum這個(gè)工具,直接在命令行終端直接運(yùn)行??梢杂孟旅娴拿顏慝@取md5sum命令幫助
man
md5sum
使用md5sum來產(chǎn)生指紋(報(bào)文摘要)命令如下:md5sum
file
file.md5
或者
md5sum
file
file.md5
注:
和
的區(qū)別在于:
表示把由file文件產(chǎn)生的摘要重定向到文件file.md5,但是會(huì)覆蓋file.md5里面的內(nèi)容;而
則將輸出的摘要附加到file.md5文件的后面。也可以把多個(gè)文件的報(bào)文摘要輸出到一個(gè)md5文件中,這要使用通配符*,比如某目錄下有幾個(gè)iso文
件,要把這幾個(gè)iso文件的摘要輸出到iso.md5文件中,命令如下:md5sum
*.iso
iso.md5
使用md5報(bào)文摘要驗(yàn)證文件,方法有二:
a、把下載的文件file和該文件的file.md5報(bào)文摘要文件放在同一個(gè)目錄下,然后用如下命令進(jìn)行驗(yàn)證:md5sum
-c
file.md5
然后如果驗(yàn)證成功,則會(huì)輸出:正確;
b、下載了文件file,然后運(yùn)行下面的命令:md5sum
file
命令會(huì)輸出一個(gè)md5的報(bào)文摘要,然后把這個(gè)報(bào)文摘要直接與file.md5中的內(nèi)容比較,如果一樣,就說明驗(yàn)證正確。
Linux系統(tǒng)中的命令實(shí)在是太多了,簡(jiǎn)單包括兩類命令,一類是內(nèi)部命令,指的是Shell自身提供的功能,一類是外部命令,指的是第三方的控制臺(tái)應(yīng)用程序。
一般來說,沒必要完全學(xué)習(xí)所有的命令,大體上有個(gè)印象,用到的時(shí)候去查一下幫助文檔,久而久之,自然熟練。
下面是網(wǎng)友整理的20個(gè)最常用的Linux命令:
1. ls命令
ls命令是列出目錄內(nèi)容(List Directory Contents)的意思。運(yùn)行它就是列出文件夾里的內(nèi)容,可能是文件也可能是文件夾。
2. lsblk命令
"lsblk"就是列出塊設(shè)備。除了RAM外,以標(biāo)準(zhǔn)的樹狀輸出格式,整齊地顯示塊設(shè)備。
3. md5sum命令
“md5sum”就是計(jì)算和檢驗(yàn)MD5信息簽名。md5 checksum(通常叫做哈希)使用匹配或者驗(yàn)證文件的文件的完整性,因?yàn)槲募赡芤驗(yàn)閭鬏斿e(cuò)誤,磁盤錯(cuò)誤或者無惡意的干擾等原因而發(fā)生改變。
4. dd命令
“dd”命令代表了轉(zhuǎn)換和復(fù)制文件??梢杂脕磙D(zhuǎn)換和復(fù)制文件,大多數(shù)時(shí)間是用來復(fù)制iso文件(或任何其它文件)到一個(gè)usb設(shè)備(或任何其它地方)中去,所以可以用來制作USB啟動(dòng)器。
6. history命令
“history”命令就是歷史記錄。它顯示了在終端中所執(zhí)行過的所有命令的歷史。
7. sudo命令
“sudo”(super user do)命令允許授權(quán)用戶執(zhí)行超級(jí)用戶或者其它用戶的命令。通過在sudoers列表的安全策略來指定。
8. mkdir命令
“mkdir”(Make directory)命令在命名路徑下創(chuàng)建新的目錄。然而如果目錄已經(jīng)存在了,那么它就會(huì)返回一個(gè)錯(cuò)誤信息"不能創(chuàng)建文件夾,文件夾已經(jīng)存在了"("cannot create folder, folder already exists")
9. touch 命令
“touch”命令代表了將文件的訪問和修改時(shí)間更新為當(dāng)前時(shí)間。touch命令只會(huì)在文件不存在的時(shí)候才會(huì)創(chuàng)建它。如果文件已經(jīng)存在了,它會(huì)更新時(shí)間戳,但是并不會(huì)改變文件的內(nèi)容。
10. chmod 命令
“chmod”命令就是改變文件的模式位。chmod會(huì)根據(jù)要求的模式來改變每個(gè)所給的文件,文件夾,腳本等等的文件模式(權(quán)限)。
11. chown命令
“chown”命令就是改變文件擁有者和所在用戶組。每個(gè)文件都屬于一個(gè)用戶組和一個(gè)用戶。在你的目錄下,使用"ls -l",你就會(huì)看到像這樣的東西。
12. apt命令
Debian系列以“apt”命令為基礎(chǔ),“apt”代表了Advanced Package Tool。APT是一個(gè)為Debian系列系統(tǒng)(Ubuntu,Kubuntu等等)開發(fā)的高級(jí)包管理器,在Gnu/Linux系統(tǒng)上,它會(huì)為包自動(dòng)地,智能地搜索,安裝,升級(jí)以及解決依賴。
13. tar命令
“tar”命令是磁帶歸檔(Tape Archive),對(duì)創(chuàng)建一些文件的的歸檔和它們的解壓很有用。
14. cal 命令
“cal”(Calender),它用來顯示當(dāng)前月份或者未來或者過去任何年份中的月份。
16. cat命令
“cat”代表了連結(jié)(Concatenation),連接兩個(gè)或者更多文本文件或者以標(biāo)準(zhǔn)輸出形式打印文件的內(nèi)容。
17. cp 命令
“copy”就是復(fù)制。它會(huì)從一個(gè)地方復(fù)制一個(gè)文件到另外一個(gè)地方。
18. mv 命令
“mv”命令將一個(gè)地方的文件移動(dòng)到另外一個(gè)地方去。
19. pwd 命令
“pwd”(print working directory),在終端中顯示當(dāng)前工作目錄的全路徑。
20. cd 命令
最后,經(jīng)常使用的“cd”命令代表了改變目錄。它在終端中改變工作目錄來執(zhí)行,復(fù)制,移動(dòng),讀,寫等等操作。
MD5算法常常被用來驗(yàn)證網(wǎng)絡(luò)文件傳輸?shù)耐暾?,防止文件被人篡改。MD5全稱是報(bào)文摘要算法(Message-Digest Algorithm5),此算法對(duì)任意長(zhǎng)度的信息逐位進(jìn)行計(jì)算,產(chǎn)生一個(gè)二進(jìn)制長(zhǎng)度為128位(十六進(jìn)制長(zhǎng)度就是32位)的指紋(或稱報(bào)文摘要),不同的文件產(chǎn)生相同的報(bào)文摘要的可能性是非常非常之小的。在linux或Unix上,md5sum是用來計(jì)算和校驗(yàn)文件報(bào)文摘要的工具程序。一般來說,安裝了linux后,就會(huì)有md5sum這個(gè)工具,直接在命令行終端直接運(yùn)行。1、使用md5sum來產(chǎn)生指紋(報(bào)文摘要)命令如下:md5sum file file.md5或者md5sum file file.md5也可以把多個(gè)文件的報(bào)文摘要輸出到一個(gè)md5文件中,這要使用通配符*,比如某目錄下有幾個(gè)iso文件,要把這幾個(gè)iso文件的摘要輸出到iso.md5文件中,命令如下:md5sum *.iso iso.md52、使用md5報(bào)文摘要驗(yàn)證文件,方法有二:把下載的文件file和該文件的file.md5報(bào)文摘要文件放在同一個(gè)目錄下,然后用如下命令進(jìn)行驗(yàn)證:md5sum -c file.md5然后如果驗(yàn)證成功,則會(huì)輸出:正確md5sum passwd passwd.bak /etc/passwd