個人博客網:https://wushaopei.github.io/ (你想要這里多有)
一、對稱加密算法DES
1、概述:采用單鑰密碼系統的加密方法,同一個密鑰可以同時用作信息的加密和解密,這種加密方法稱為對稱加密,也稱為單密鑰加密。
對稱加密的特點: 即加密密鑰 = 解密密鑰
2、常用的對稱加密算法:
- 初等
- DES —3DES
- AES
- PBE
- IDEA
3、對稱加密算法 —— DES
DES( Data Encryption Standard ) 是一種數據加密標准。
其密鑰規則如下:
4、JDK實現DES算法
【1】初始化密鑰
- 使用KeyGenerator類的getInstance()靜態方法,獲取生成指定算法的密鑰生成器,參數是算法名稱.
- 使用KeyGenerator類的init()方法進行密鑰生成器的初始化,指定密鑰生成器產生密鑰的長度.
- 使用KeyGenerator類的generatorKey()方法生成一個密鑰對象,返回SecretKey密鑰對象.
- SecretKey為密鑰對象.使用它的getEncoded()方法返回一個密鑰(字節數組形式)
【2】轉化密鑰(還原密鑰)
- 將jdk生成的密鑰對象轉化成DES規則的密鑰對象.
- 創建一個DESKeySpec實例,作用是將JDK初始化的密鑰轉化成DES規則的密鑰.
- 構造方法參數是JDK生成的密鑰(字節數組形式).
- 使用SecretKeyFactory類的getInstance()靜態方法獲取一個密鑰工廠實例,參數是算法名稱
- 使用SecretKeyFactory類的generateSecret()方法生成密鑰,參數是DESKeySpec實例.返回SecretKey,返回的SecretKey實例就是符合DES算法的密鑰.
執行結果:
jdk des encrypt:ea3293902913510b
jdk des decrypt:wen-min
5、DES加密算法的消息傳遞機制;
加密算法深入學習鏈接:https://www.iteye.com/blog/snowolf-379860
二、對稱加密算法3DES
3DES,即3重DES,是DES的一個分支;但由於安全性問題;且違反柯克霍夫原則,使用頻率低。
好處:
- 密鑰長度增強;
- 迭代次數提高。
1、3重DES的規則:
2、JDK實現3DES
與實現DES方式基本一致,算法名稱要改為DESede,密鑰長度為168,轉換密鑰時使用DESedeKeySpec類.
在使用KeyGenerator的init()方法時,參數要指定密鑰的長度.可以直接指定一個數值.同時也可以使用SecureRandom實例作為參數,該實例的作用是獲取KeyGenerator對應算法其默認的密鑰長度.
執行結果:
三、對稱加密算法AES
1、概述
AES是DES的高級替代,也是目前使用最多的對稱加密算法
DES有漏洞,所以,產生了3重DES<br>
3重DES的效率比較低,所以產生了AES<br>
AES的特點是:
- 使用的更為廣泛
- 目前還沒有被破解
- 通常用與移動通信系統加密和SSH協議的軟件加密
2、AES的使用規則:
3、JDK實現AES加密解密算法:
4、AES對稱加密算法消息傳遞規則:
四、PBE加密算法
1、概述
PBE算法結合了消息摘要算法和對稱加密算法的優點。PBE是基於口令的加密
對稱加密算法之PBE的特點概述,本質上是對DES/3DES/AES對稱加密算法的包裝,不是新的算法,不過也是最為牛逼的一種方式。
鹽:指加密的隨機字符串或者口令等,也可以人為是一些擾碼,防止密碼的暴力破解
2、PBE算法的規則:
加密算法安全等級:PBE>AES>3DES>DES
3、JDK實現PBE加密解密算法
執行結果:
4、PBE加密算法的消息傳遞機制