南通學(xué)java開發(fā)|java開發(fā)必須掌握的5種加密策略
一、數(shù)字摘要
數(shù)字摘要也稱為消息摘要,它是一個(gè)對(duì)應(yīng)一個(gè)消息或文本的固定長(zhǎng)度的值,它由一個(gè)單向hash函數(shù)對(duì)消息進(jìn)行計(jì)算而產(chǎn)生。如果消息在傳遞的途中改變了,接收者通過(guò)對(duì)收到消息采用相同的hash重新計(jì)算,新產(chǎn)生的摘要與原摘要進(jìn)行比較,就可知道消息是否被篡改了,因此消息摘要能夠驗(yàn)證消息的完整性。消息摘要采用單向hash函數(shù)將需要計(jì)算的內(nèi)容"摘要"成固定長(zhǎng)度的串,這個(gè)串亦稱為數(shù)字指紋。這個(gè)串有固定的長(zhǎng)度,且不同的明文摘要成密文,其結(jié)果總是不同的(相對(duì)的),而同樣的明文其摘要必定一致。這樣這串摘要便可成為驗(yàn)證明文是否是"真身"的"指紋"了。
md5
md5即message digest algorithm 5(信息摘要算法5),是數(shù)字摘要算法一種實(shí)現(xiàn),用于確保信息傳輸完整性和一致性,摘要長(zhǎng)度為128位。md5由md4、md3、md2改進(jìn)而來(lái),主要增強(qiáng)算法復(fù)雜度和不可逆性,該算法因其普遍、穩(wěn)定、的特點(diǎn),在產(chǎn)業(yè)界得到了極為廣泛的使用,目前主流的編程語(yǔ)言普遍都已有md5算法實(shí)現(xiàn)。
sha
sha的全稱是secure hash algorithm,即安全散列算法。1993年,安全散列算法(sha)由美國(guó)標(biāo)準(zhǔn)和技術(shù)協(xié)會(huì)(nist)提出,并作為聯(lián)邦信息處理標(biāo)準(zhǔn)(fips pub 180)公布,1995年又發(fā)布了一個(gè)修訂版fips pub 180-1,通常稱之為sha-1。sha-1是基于md4算法的,現(xiàn)在已成為公認(rèn)的安全的散列算法之一,并被廣泛使用。 sha-1算法生成的摘要信息的長(zhǎng)度為160位,由于生成的摘要信息更長(zhǎng),運(yùn)算的過(guò)程更加復(fù)雜, 在相同的硬件上,sha-1的運(yùn)行速度比md5更慢,但是也更為安全。
二、對(duì)稱加密:南通學(xué)java開發(fā)
對(duì)稱加密算法是應(yīng)用較早的加密算法,技術(shù)成熟。在對(duì)稱加密算法中,數(shù)據(jù)發(fā)送方將明文(原始數(shù)據(jù))和加密密鑰一起經(jīng)過(guò)特殊加密算法處理后,生成復(fù)雜的加密密文進(jìn)行發(fā)送,數(shù)據(jù)接收方收到密文后,若想讀取原文,則需要使用加密使用的密鑰及相同算法的逆算法對(duì)加密的密文進(jìn)行解密,才能使其恢復(fù)成可讀明文。在對(duì)稱加密算法中,使用的密鑰只有一個(gè),發(fā)送和接收雙方都使用這個(gè)密鑰對(duì)數(shù)據(jù)進(jìn)行加密和解密,這就要求加密和解密方事先都必須知道加密的密鑰。
des
des算法屬于對(duì)稱加密算法,明文按64位進(jìn)行分組,密鑰長(zhǎng)64位,但事實(shí)上只有56位參與des運(yùn)算(第8、16、24、32、40、48、56、64位是校驗(yàn)位,使得每個(gè)密鑰都有奇數(shù)個(gè)1),分組后的明文和56位的密鑰按位或交換的方法形成密文。由于計(jì)算機(jī)運(yùn)算能力的增強(qiáng),原版des密碼的密鑰長(zhǎng)度變得容易被暴力,因此演變出了3des算法。3des是des向aes過(guò)渡的加密算法,它使用3條56位的密鑰對(duì)數(shù)據(jù)進(jìn)行三次加密,是des的一個(gè)更安全的變形。
aes
aes的全稱是advanced encryption standard,即加密標(biāo)準(zhǔn),該算法由比利時(shí)密碼學(xué)家joan daemen和vincent rijmen所設(shè)計(jì),結(jié)合兩位作者的名字,又稱rijndael加密算法, 是美國(guó)采用的一種對(duì)稱加密標(biāo)準(zhǔn),這個(gè)標(biāo)準(zhǔn)用來(lái)原先的des算法,已經(jīng)廣為全世界所使用,已然成為對(duì)稱加密算法中流行的算法之一。 aes算法作為新一代的數(shù)據(jù)加密標(biāo)準(zhǔn)匯聚了強(qiáng)安全性、高性能、率、易用和靈活等優(yōu)點(diǎn),設(shè)計(jì)有三個(gè)密鑰長(zhǎng)度:128,192,256位,比des算法的加密強(qiáng)度更高,更為安全。
三、非對(duì)稱加密:南通學(xué)java開發(fā)
非對(duì)稱加密算法又稱為公開密鑰加密算法,它需要兩個(gè)密鑰,一個(gè)稱為公開密鑰(public key), 即公鑰,另一個(gè)稱為私有密鑰(private key),即私鑰。公鑰與私鑰需要配對(duì)使用,如果用公鑰對(duì)數(shù)據(jù)進(jìn)行加密,只有用對(duì)應(yīng)的私鑰才能進(jìn)行解密,而如果使用私鑰對(duì)數(shù)據(jù)進(jìn)行加密,那么只有用對(duì)應(yīng)的公鑰才能進(jìn)行解密。因?yàn)榧用芎徒饷苁褂玫氖莾蓚€(gè)不同的密鑰,所以這種算法稱為非對(duì)稱加密算法。 非對(duì)稱加密算法實(shí)現(xiàn)機(jī)密信息交換的基本過(guò)程是:甲方生成一對(duì)密鑰并將其中的一把作為公鑰向其它人公開,得到該公鑰的乙方使用該密鑰對(duì)機(jī)密信息進(jìn)行加密后再發(fā)送給甲方,甲方再使用自己保存的另一把專用密鑰,即私鑰,對(duì)加密后的信息進(jìn)行解密。
rsa
rsa非對(duì)稱加密算法是1977年由ron rivest、adi shamirh和lenadleman開發(fā)的,rsa取名來(lái)自開發(fā)他們?nèi)叩拿?。rsa是目前有影響力的非對(duì)稱加密算法,它能夠抵抗到目前為止已知的所有密碼攻擊,已被iso為公鑰數(shù)據(jù)加密標(biāo)準(zhǔn)。rsa算法基于一個(gè)十分簡(jiǎn)單的數(shù)論事實(shí):將兩個(gè)大素?cái)?shù)相乘十分容易,但反過(guò)來(lái)想要對(duì)其乘積進(jìn)行因式分解卻極其困難, 因此可以將乘積公開作為加密密鑰。
四、數(shù)字簽名:南通學(xué)java開發(fā)
簽名認(rèn)證是對(duì)非對(duì)稱加密技術(shù)與數(shù)字摘要技術(shù)的綜合運(yùn)用,指的是將通信內(nèi)容的摘要信息使用發(fā)送者的私鑰進(jìn)行加密,然后將密文與原文一起傳輸給信息的接收者,接收者通過(guò)發(fā)送者的公鑰解密被加密的摘要信息,然后使用與發(fā)送者相同的摘要算法,對(duì)接收到的內(nèi)容采用相同的方式產(chǎn)生摘要串,與解密的摘要串進(jìn)行對(duì)比,如果相同,則說(shuō)明接收到的內(nèi)容是完整的,在傳輸過(guò)程中沒(méi)有受到第三方篡改,否則則說(shuō)明通信內(nèi)容已被第三方修改。
每個(gè)人都有其特有的私鑰且都是對(duì)外界保密的,而通過(guò)私鑰加密的的信息,只能通過(guò)其對(duì)應(yīng)的公鑰才能解密,因此,私鑰可以代表私鑰持有者的身份,可以通過(guò)私鑰對(duì)應(yīng)的公鑰來(lái)對(duì)私鑰擁有者的身份進(jìn)行校驗(yàn)。通過(guò)數(shù)字簽名,能夠確認(rèn)消息是由信息發(fā)送方簽名并發(fā)送出來(lái)的, 因?yàn)槠渌烁久安涣讼l(fā)送方的簽名,他們沒(méi)有消息發(fā)送者的私鑰。而不同的內(nèi)容, 摘要信息千差萬(wàn)別,通過(guò)數(shù)字摘要算法,可以確保傳輸內(nèi)容的完整性,如果傳輸內(nèi)容中途被篡改,對(duì)應(yīng)的數(shù)字簽名的值也將發(fā)生改變。
只有信息的發(fā)送者才能產(chǎn)生別人無(wú)法偽造的數(shù)字簽名串,這個(gè)串能對(duì)信息發(fā)送者所發(fā)送的內(nèi)容完整性以及發(fā)送者的身份進(jìn)行校驗(yàn)和鑒別。
通信正文經(jīng)過(guò)相應(yīng)的摘要算法生成摘要后,使用消息發(fā)送者的私鑰進(jìn)行加密,生成數(shù)字簽名。
五、數(shù)字證書:南通學(xué)java開發(fā)
我們每個(gè)人都有很多形式的身份證明,如身份證、駕駛證、護(hù)照等等,這些證件都是由相應(yīng)的簽發(fā)機(jī)構(gòu)蓋章認(rèn)證,可信程度較高,很難進(jìn)行偽造,并且,隨著科技的發(fā)展,還可以通過(guò)指紋、視網(wǎng)膜等生物特征進(jìn)行身份的認(rèn)證。 數(shù)字證書(digital certificate),也稱為電子證書,類似于日常生活中的身份證,也是一種形式的身份認(rèn)證,用于標(biāo)識(shí)網(wǎng)絡(luò)中的用戶身份。數(shù)字證書集合了多種密碼學(xué)的加密算法,證書自身帶有公鑰信息,可以完成相應(yīng)的加密、解密操作,同時(shí),還擁有自身信息的數(shù)字簽名,可以鑒別證書的頒發(fā)機(jī)構(gòu),以及證書內(nèi)容的完整性。由于證書本身含有用戶的認(rèn)證信息,因此可以作為用戶身份識(shí)別的依據(jù)。
如需找南通學(xué)java開發(fā),就去厚學(xué)網(wǎng),海量學(xué)校等你挑!南通學(xué)java開發(fā)?厚學(xué)網(wǎng)給你更多選擇!
溫馨提示
關(guān)于厚學(xué)
服務(wù)支持
厚學(xué)網(wǎng)微信號(hào)