您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“大數(shù)據(jù)開發(fā)中常見加密算法有哪些”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“大數(shù)據(jù)開發(fā)中常見加密算法有哪些”這篇文章吧。
對(duì)稱加密算法:加密算法與解密算法的秘鑰key一致。非對(duì)稱加密算法:加密算法與解密算法的秘鑰不一致。散列算法:沒有秘鑰,目前無法反向解密。(暴力破解除外)
我們?yōu)槭裁葱枰用埽课覀內(nèi)粘I钪械卿浢艽a或者各種隱私信息都需要進(jìn)行加密保存防止信息泄露。那我們接下來來看看這三種算法類型分別有什么樣的算法呢:
對(duì)稱加密算法:目前主流算法有DES算法,3DES算法,AES算法非對(duì)稱加密算法:目前主流算法有RSA算法散列算法:目前主要以MD5和SHA-1算法為主
本篇文章就圍繞這6個(gè)算法進(jìn)行具體的講解,可能這些算法大家最熟悉的就是MD5算法了。為什么熟悉呢?MD5算法最常用的一個(gè)場(chǎng)景就是用戶注冊(cè),密碼進(jìn)行MD5加密,密碼無法反向解密可以提高安全性。接下來我們開始第一種算法:MD5算法。
MD5加密
MD5 其實(shí)是一種哈希算法,它實(shí)質(zhì)上是對(duì)一段信息產(chǎn)生信息摘要,以防止信息被篡改。嚴(yán)格來說MD5 不是一種加密算法而是一種摘要算法。無論是多長(zhǎng)的字符串,MD5 都會(huì)輸出長(zhǎng)度為128字節(jié)的一個(gè)字符串,轉(zhuǎn)換成16進(jìn)制就是32個(gè)字符。我們一個(gè)直接的MD5算法:
該算法就是一個(gè)最基本的MD5加密,加密成功將加密字符串轉(zhuǎn)化為純小寫。我們可以看下效果:
可以看到MD5加密效果解決了,但是MD5雖然不能反向解密,但是可以不斷使用MD5加密進(jìn)行嘗試暴力破解,所以我們一般使用MD5加密都會(huì)再搭配不同的加密算法進(jìn)行使用。我們?cè)O(shè)計(jì)如下一個(gè)加密算法:
將接口所需的必需參數(shù)加上當(dāng)前時(shí)間戳按照key=value的ASCII順序進(jìn)行排序組裝字符串左右拼接一個(gè)加密秘鑰secret組成代價(jià)密字符串waitSign將待加密字符串進(jìn)行MD5加密并轉(zhuǎn)化為純小寫
現(xiàn)在我們可以在代碼來實(shí)現(xiàn)下這個(gè)結(jié)合了特定算法的MD5加密:
我們直接將設(shè)計(jì)的算法封裝成一個(gè)公共方法,我們?cè)诮涌谥兄苯诱{(diào)用
createSign(obj, secret)
然后將必需參數(shù)結(jié)合當(dāng)前時(shí)間戳拼接成json格式,作為第一個(gè)參數(shù)進(jìn)行傳參,秘鑰secret作為第二個(gè)參數(shù)傳參。我們看下接口調(diào)用代碼:
我們可以看下新的效果:
我們?cè)谛碌乃惴ńY(jié)合了當(dāng)前時(shí)間戳,我們就可以對(duì)時(shí)間戳進(jìn)行限制一分鐘內(nèi)有效??梢杂行ПWC接口的安全性。說完了MD5加密,我們接著來將建另一種加密算法SHA-1算法。
SHA-1算法
SHA-1算法是和MD5一樣流行的消息摘要算法,但是SHA-1 比MD5的安全性更強(qiáng)。SHA-1會(huì)產(chǎn)生一個(gè)160位的消息摘要,16進(jìn)制下就40位字符。我們來看看具體實(shí)現(xiàn):
可以看到我們將原密碼經(jīng)過SHA-1加密進(jìn)行轉(zhuǎn)換了。但是雖然SHA-1安全性比MD5更高,但是直接簡(jiǎn)單的進(jìn)行SHA-1加密,一樣可能被暴力破解,所以可以采用結(jié)合剛才設(shè)計(jì)的算法進(jìn)行SHA-1加密,具體我就不多說了??梢宰孕袊L試。接下來我們來看看對(duì)稱加密。
DES算法
DES 加密算法是一種分組密碼,以64位為分組對(duì)數(shù)據(jù)加密,它的密鑰長(zhǎng)度是56位,加密解密用相同的算法。DES加密算法對(duì)密鑰進(jìn)行保密,而公開算法,包括加密和解密算法。這樣,只有掌握了和發(fā)送方相同密鑰 的人才能解讀由DES加密算法加密的密文數(shù)據(jù)。因此,破譯DES加密算法實(shí)際上就是搜索密鑰的編碼。暴力破解DES算法其運(yùn)算次數(shù)僅為2^56次。
我們接下來看看如何實(shí)現(xiàn)DES加密算法:
這里我僅采取cbc模式加密進(jìn)行演示,對(duì)DES加密其他算法模式有興趣的可以自行去研究。我們可以看下加密效果:
因?yàn)?strong>DES算法是對(duì)稱算法,所以可以使用相同算法進(jìn)行反向解密。我們看下算法如何進(jìn)行實(shí)現(xiàn):
可以看到我們成功將經(jīng)過des-cbc進(jìn)行加密的加密字符串給成功解密微原字符串。但是我們也說過DES算法使用暴力破解是完全可以進(jìn)行破解的,所以3DES算法其實(shí)就是對(duì)DES算法的優(yōu)化。
3DES算法
3DES算法其實(shí)就是基于DES加密算法,采用三次不同密鑰進(jìn)行三次不同的加密。所以加密后密鑰強(qiáng)度會(huì)更高。接下來我們來看看3DES的實(shí)現(xiàn)過程:
可以看到我們成功使用3DES進(jìn)行密碼的加解密。主流的對(duì)稱加密算法還剩下一種:AES算法。
AES算法
AES加密算法是密碼學(xué)中的高級(jí)加密標(biāo)準(zhǔn),密鑰長(zhǎng)度的最少支持為128位、192位、256位,分組長(zhǎng)度128位,算法應(yīng)易于各種硬件和軟件實(shí)現(xiàn)。AES本身就是為了取代DES算法而產(chǎn)生的,AES具有更好的安全性、更高的效率和靈活性。
可以看到,我選擇了秘鑰長(zhǎng)度為128位,算法模式為CBC模式的AES加密。我們可以看下算法效果:
到這里對(duì)稱加密算法三種算法我們都進(jìn)行實(shí)現(xiàn)了。接下來談?wù)劮菍?duì)稱加密。與對(duì)稱加密 算法不同,非對(duì)稱加密算法需要兩個(gè)密鑰:公鑰和私鑰。 公鑰與私鑰是一對(duì),如果用公鑰對(duì)數(shù)據(jù)進(jìn)行加密,只有用對(duì)應(yīng)的私鑰才能解密;如果用私鑰對(duì)數(shù)據(jù)進(jìn)行加密,那么只有用對(duì)應(yīng)的公鑰才能解密。因?yàn)榧用芎徒饷苁褂玫氖莾蓚€(gè)不同的 密鑰,所以這種算法叫作非對(duì)稱加密算法。接下來我們看看非對(duì)稱加密:RSA算法。
RSA算法
RSA算法通常先生成一對(duì)RSA密鑰,由用戶保存私鑰;另一個(gè)為公鑰,可對(duì)外公開。為提高保密強(qiáng)度,RSA密鑰至少為512位長(zhǎng),一般推薦使用1024位。這就使加密的計(jì)算量很大。為減少計(jì)算量,在傳送信息時(shí),常采用傳統(tǒng)加密方法與公開密鑰加密方法相結(jié)合的方式,即信息采用改進(jìn)的DES或AES對(duì)話密鑰加密,然后使用RSA密鑰加密對(duì)話密鑰和信息摘要。對(duì)方收到信息后,用不同的密鑰解密并可核對(duì)信息摘要。到目前為止,還未出現(xiàn)任何可靠的攻擊RSA算法的方式。
可以看到,我們使用秘鑰長(zhǎng)度為1024位,生成公鑰與私鑰。然后使用公鑰進(jìn)行加密,使用私鑰進(jìn)行解密。接下來來看下運(yùn)行效果:
看到加密后這么一大串是不是瞬間打消了去想方設(shè)法破解的想法了呢?RSA加密算法是目前最有影響力的公鑰加密算法,并且被普遍認(rèn)為是目前最優(yōu)秀的公鑰方案之一。RSA是第一個(gè)能同時(shí)用于加密和數(shù)字簽名的算法。
在我們使用私鑰進(jìn)行簽名,用公鑰進(jìn)行驗(yàn)證。驗(yàn)證成功返回true,驗(yàn)證失敗返回false。我們可以看下效果:
以上是“大數(shù)據(jù)開發(fā)中常見加密算法有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。