摘要:對稱加密算法概念加密密鑰和解密密鑰相同,大部分算法加密揭秘過程互逆。特點算法公開相比非對稱加密計算量小加密速度快效率高。
對稱加密算法概念
加密密鑰和解密密鑰相同,大部分算法加密揭秘過程互逆。
特點:算法公開、(相比非對稱加密)計算量小、加密速度快、效率高。
弱點:雙方都使用同樣的密鑰,安全性得不到保證。
常用對稱加密算法DES(Data Encryption Standard)
3DES(DES加強版,使用3次DES計算,Triple DES,DESede)
AES(Advanced Encryption Standard,3DES加強版)
JDK版DES/3DES/AES算法調(diào)用模板 1. 生成密鑰//KeyGenerator,密鑰生成器 KeyGenerator keyGen = KeyGenerator.getInstance("DES");//算法:DES,DESede,AES //初始化密鑰生成器 keyGen.init(56); //各算法密鑰長度不同,參見說明 //生成密鑰 SecretKey secretKey = keyGen.generateKey(); //生產(chǎn)字節(jié)碼數(shù)據(jù) byte[] key = secretKey.getEncoded();
2.加/解密說明:
1.通過「KeyGenerator.getInstance("DES")」生成密鑰,
2.參數(shù)為算法名稱:分別對應(yīng)DES、DESede(即3DES)、AES
3.每種算法密鑰長度參數(shù):DES(56),3DES(112,168),AES(192,256)
//通過字節(jié)碼數(shù)據(jù)key 恢復(fù)密鑰 SecretKey secretKey = new SecretKeySpec(key, "DES"); //Cipher完成加密/解密工作 Cipher cipher = Cipher.getInstance("DES"); //根據(jù)密鑰,對Cipher初始化,并選擇加密還是解密 cipher.init(Cipher.ENCRYPT_MODE, secretKey); byte[] result = cipher.doFinal(data);
代碼示例1.加密或解密都通過cipher.init()設(shè)置,參數(shù):ENCRYPT_MODE/DECRYPT_MODE
2.加密或解密都通過cipher.doFinal() 執(zhí)行,獲得byte[]類型結(jié)果。
import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.NoSuchPaddingException; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; public class DESUtil { /* * 生成密鑰 */ public static byte[] initKey() throws Exception{ KeyGenerator keyGen = KeyGenerator.getInstance("DES"); keyGen.init(56); SecretKey secretKey = keyGen.generateKey(); return secretKey.getEncoded(); } /* * DES 加密 */ public static byte[] encrypt(byte[] data, byte[] key) throws Exception{ SecretKey secretKey = new SecretKeySpec(key, "DES"); Cipher cipher = Cipher.getInstance("DES"); cipher.init(Cipher.ENCRYPT_MODE, secretKey); byte[] cipherBytes = cipher.doFinal(data); return cipherBytes; } /* * DES 解密 */ public static byte[] decrypt(byte[] data, byte[] key) throws Exception{ SecretKey secretKey = new SecretKeySpec(key, "DES"); Cipher cipher = Cipher.getInstance("DES"); cipher.init(Cipher.DECRYPT_MODE, secretKey); byte[] plainBytes = cipher.doFinal(data); return plainBytes; } //Test public static void main(String[] args) throws Exception { byte[] desKey = DESUtil.initKey(); System.out.println("DES KEY : " + BytesToHex.fromBytesToHex(desKey)); byte[] desResult = DESUtil.encrypt(DATA.getBytes(), desKey); System.out.println(DATA + ">>>DES 加密結(jié)果>>>" + BytesToHex.fromBytesToHex(desResult)); byte[] desPlain = DESUtil.decrypt(desResult, desKey); System.out.println(DATA + ">>>DES 解密結(jié)果>>>" + new String(desPlain)); } }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/66239.html
時間:2017年4月11日星期二說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)示例源碼:https://github.com/zccodere/s...個人學(xué)習(xí)源碼:https://github.com/zccodere/s... 第一章:對稱加密算法DES 1-1 JAVA對稱加密算法DES 加密密鑰=解密密鑰 對稱加密算法 初等 DES --3D...
摘要:系列密碼學(xué)二傳送門密碼學(xué)一基礎(chǔ)密碼學(xué)算法分類消息編碼消息摘要類,類,對稱密碼非對稱密碼數(shù)字簽名五元組明文原始信息。非對稱密碼包提供給,,等非對稱加密算法。對稱加密算法在分布式網(wǎng)絡(luò)系統(tǒng)上使用較為困難,主要是因為密鑰管理困難,使用成本較高。 前言 最近一場面試,面試官問了我 對稱加密與非對稱加密的問題,雖然曾經(jīng)看過一些內(nèi)容,但是沒有系統(tǒng)的整理,所以當(dāng)被問的時候,腦子里一片空白,沒有回答上...
閱讀 2149·2023-04-25 18:49
閱讀 1854·2019-08-30 14:02
閱讀 2657·2019-08-29 17:24
閱讀 3334·2019-08-28 18:10
閱讀 2938·2019-08-28 18:03
閱讀 502·2019-08-26 12:01
閱讀 3322·2019-08-26 11:31
閱讀 1442·2019-08-26 10:29