當前位置:
首頁 > 知識 > Java利用DES/3DES/AES這三種演算法分別實現對稱加密

Java利用DES/3DES/AES這三種演算法分別實現對稱加密

來自:郭朝的博客


有兩句話是這麼說的:


1)演算法和數據結構就是編程的一個重要部分,你若失掉了演算法和數據結構,你就把一切都失掉了。


2)編程就是演算法和數據結構,演算法和數據結構是編程的靈魂。


注意,這可不是我說的,是無數程序員總結的,話說的很實在也很精闢,若想長久可持續發展,多研究演算法還是很有必要的,今天我給大家說說加密演算法中的對稱加密演算法,並且這裡將教會大家對稱加密演算法的編程使用。包含DES、3DES和AES三種對稱加密演算法的編程使用,乾貨滿滿。

1、對稱密碼演算法


對稱密碼演算法是當今應用範圍最廣,使用頻率最高的加密演算法。它不僅應用於軟體行業,在硬體行業同樣流行。各種基礎設施凡是涉及到安全需求,都會優先考慮對稱加密演算法。


對稱密碼演算法的加密密鑰和解密密鑰相同,對於大多數對稱密碼演算法,加解密過程互逆。


(1)加解密通信模型


(2)特點:演算法公開、計算量小、加密速度快、加密效率高


(3)弱點:雙方都使用同樣密鑰,安全性得不到保證


對稱密碼有流密碼和分組密碼兩種,但是現在普遍使用的是分組密碼:


(4)分組密碼工作模式


1)ECB:電子密碼本(最常用的,每次加密均產生獨立的密文分組,並且對其他的密文分組不會產生影響,也就是相同的明文加密後產生相同的密文)


2)CBC:密文鏈接(常用的,明文加密前需要先和前面的密文進行異或運算,也就是相同的明文加密後產生不同的密文)

除了這兩種常用的工作模式,還有:


3)CFB:密文反饋


4)OFB:輸出反饋


5)CTR:計數器


這五種工作模式主要是密碼學中演算法在進行推導演算的時候所應用到的。


6、分組密碼填充方式


1)NoPadding:無填充


2)PKCS5Padding:


3)ISO10126Padding:


7、常用對稱密碼:

1)DES(Data Encryption Standard,數據加密標準)


2)3DES(Triple DES、DESede,進行了三重DES加密的演算法)


3)AES(Advanced Encryption Standard,高級數據加密標準,AES演算法可以有效抵制針對DES的攻擊演算法)


先來看一下這三種演算法的簡單對比:

Java利用DES/3DES/AES這三種演算法分別實現對稱加密



下面我們看如何使用 DES / 3DES / AES 三種演算法實現 對稱加密:


2、DES演算法


1、DES:數據加密標準,是對稱加密演算法領域中的典型演算法


2、特點:密鑰偏短(56位)、生命周期短(避免被破解)

3、Java實現


1)生成密鑰


2)加密


3)解密


我們可以發現,加密解密我們只是設置了不同的模式而已。


3、3DES演算法


1、3DES:將密鑰長度增至112位或168位,通過增加迭代次數提高安全性


2、缺點:處理速度較慢、密鑰計算時間較長、加密效率不高


3、Java實現


1)生成密鑰

2)3DES加密


3)3DES解密


4、AES演算法(推薦使用)


1、AES:高級數據加密標準,能夠有效抵禦已知的針對DES演算法的所有攻擊


2、特點:密鑰建立時間短、靈敏性好、內存需求低、安全性高


3、Java實現


1)生成密鑰


2)AES加密


3)AES解密


為了方便使用,我對DES / 3DES / AES 三種演算法進行了工具類編寫,地址:https://github.com/smartbetter/Android-UtilsLibrary (新增DES/3DES/AES工具類)。

到此,DES / 3DES / AES 三種演算法實現 對稱加密 就說完了,喜歡記得「贊」一下哦!


最近熱文:


1、邀你參加11期 程序員專場相親活動


2、PHP高工/架構師,18-50K,深圳南山


3、JAVA/Web前端,深圳前海,15-30K


4、如何判斷是否到了該辭職的時候?


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序源 的精彩文章:

程序員如何面對自己三十歲後的下坡路?
Java開發/PHP開發/Web前端,架構師,深圳南山
一行代碼完成並行任務
Node.js開發者必須了解的4個JS要點
從零開始的 Python 爬蟲速成指南

TAG:程序源 |

您可能感興趣

Dovey Wan口中航母級別的CELER NETWORK要實現每秒數十億筆交易!
AMD Radeon VII可DirectML實現DLSS
GTC China 2018:NVIDIA用人工智慧實現新一輪的突破
英特爾QLC技術Ruler SSD,1U設計中實現1PB容量,還推出第二代至強處理器、乙太網控制器、FPGA新品
EMNLP 2018 | Google AI提出「透明注意力」機制,實現更深層NMT模型
NVIDIA發布Omniverse:實現2D與3D軟體互聯
LVS/DR+keepalived負載均衡實現
HTML5 | 使用Canvas API畫圖實現繪製坦克圖案
Apacer AS2280P2 M.2 PCIe Gen 3 x2 SSD極速登場,實現強悍電競與高階多媒體雙用平台!
基於ng-zorro的ASP.NET ZERO前端實現
四塊GPU即可訓練BigGAN:「官方版」PyTorch實現出爐
EFCore擴展Update方法(實現 Update User SET Id = Id + 1)
用PyTorch實現Mask R-CNN
AMD YES!銳龍在更多區域將實現對intel銷量反超
HTC高管展示SteamVR Tracking 2.0技術 實現跨房間VR使用
實現極速便攜傳輸,就選WD My Passport SSD
Github2.2K星PyTorch資源列表:450個NLP/CV/SP、論文實現、教程、示例
基於INTEL FPGA硬浮點DSP實現卷積運算
「CVPR Oral」TensorFlow實現StarGAN代碼全部開源,1天訓練完
MicroLED下半年實現量產,OLED、QLED將面臨勁敵?