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