摘要:對(duì)稱加密算法概念加密密鑰和解密密鑰相同,大部分算法加密揭秘過(guò)程互逆。特點(diǎn)算法公開(kāi)相比非對(duì)稱加密計(jì)算量小加密速度快效率高。
對(duì)稱加密算法概念
加密密鑰和解密密鑰相同,大部分算法加密揭秘過(guò)程互逆。
特點(diǎn):算法公開(kāi)、(相比非對(duì)稱加密)計(jì)算量小、加密速度快、效率高。
弱點(diǎn):雙方都使用同樣的密鑰,安全性得不到保證。
常用對(duì)稱加密算法DES(Data Encryption Standard)
3DES(DES加強(qiáng)版,使用3次DES計(jì)算,Triple DES,DESede)
AES(Advanced Encryption Standard,3DES加強(qiáng)版)
JDK版DES/3DES/AES算法調(diào)用模板 1. 生成密鑰//KeyGenerator,密鑰生成器 KeyGenerator keyGen = KeyGenerator.getInstance("DES");//算法:DES,DESede,AES //初始化密鑰生成器 keyGen.init(56); //各算法密鑰長(zhǎng)度不同,參見(jiàn)說(shuō)明 //生成密鑰 SecretKey secretKey = keyGen.generateKey(); //生產(chǎn)字節(jié)碼數(shù)據(jù) byte[] key = secretKey.getEncoded();
2.加/解密說(shuō)明:
1.通過(guò)「KeyGenerator.getInstance("DES")」生成密鑰,
2.參數(shù)為算法名稱:分別對(duì)應(yīng)DES、DESede(即3DES)、AES
3.每種算法密鑰長(zhǎng)度參數(shù):DES(56),3DES(112,168),AES(192,256)
//通過(guò)字節(jié)碼數(shù)據(jù)key 恢復(fù)密鑰 SecretKey secretKey = new SecretKeySpec(key, "DES"); //Cipher完成加密/解密工作 Cipher cipher = Cipher.getInstance("DES"); //根據(jù)密鑰,對(duì)Cipher初始化,并選擇加密還是解密 cipher.init(Cipher.ENCRYPT_MODE, secretKey); byte[] result = cipher.doFinal(data);
代碼示例1.加密或解密都通過(guò)cipher.init()設(shè)置,參數(shù):ENCRYPT_MODE/DECRYPT_MODE
2.加密或解密都通過(guò)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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/66239.html
時(shí)間:2017年4月11日星期二說(shuō)明:本文部分內(nèi)容均來(lái)自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)示例源碼:https://github.com/zccodere/s...個(gè)人學(xué)習(xí)源碼:https://github.com/zccodere/s... 第一章:對(duì)稱加密算法DES 1-1 JAVA對(duì)稱加密算法DES 加密密鑰=解密密鑰 對(duì)稱加密算法 初等 DES --3D...
摘要:在開(kāi)發(fā)過(guò)程中,常常用到各種加密方法和算法,本文總結(jié)了幾種常用加密方法的原理。非對(duì)稱加密原理非對(duì)稱加密算法需要兩個(gè)密鑰公開(kāi)密鑰和私有密鑰。 在開(kāi)發(fā)過(guò)程中,常常用到各種加密方法和算法,本文總結(jié)了幾種常用加密方法的原理。 對(duì)稱加密 showImg(https://segmentfault.com/img/bVbacxw?w=1128&h=468); 原理: 加密和解密數(shù)據(jù)使用同一個(gè)密鑰,適...
摘要:系列密碼學(xué)二傳送門密碼學(xué)一基礎(chǔ)密碼學(xué)算法分類消息編碼消息摘要類,類,對(duì)稱密碼非對(duì)稱密碼數(shù)字簽名五元組明文原始信息。非對(duì)稱密碼包提供給,,等非對(duì)稱加密算法。對(duì)稱加密算法在分布式網(wǎng)絡(luò)系統(tǒng)上使用較為困難,主要是因?yàn)槊荑€管理困難,使用成本較高。 前言 最近一場(chǎng)面試,面試官問(wèn)了我 對(duì)稱加密與非對(duì)稱加密的問(wèn)題,雖然曾經(jīng)看過(guò)一些內(nèi)容,但是沒(méi)有系統(tǒng)的整理,所以當(dāng)被問(wèn)的時(shí)候,腦子里一片空白,沒(méi)有回答上...
摘要:加密解密算法介紹算法目前常見(jiàn)有加密算法,散列算法,編碼算法,使用位關(guān)鍵字作為流加密算法加密技術(shù)通常分為兩大類對(duì)稱式和非對(duì)稱式。對(duì)稱性加密算法有用途對(duì)稱加密算法用來(lái)對(duì)敏感數(shù)據(jù)等信息進(jìn)行加密數(shù)據(jù)加密標(biāo)準(zhǔn),速度較快,適用于加密大量數(shù)據(jù)的場(chǎng)合。 加密解密算法介紹 算法目前常見(jiàn)有: 加密算法,散列算法,Base64(編碼算法),https(SSL使用40位關(guān)鍵字作為RC4流加密算法) 加密技術(shù)通...
閱讀 2198·2023-04-25 18:49
閱讀 1902·2019-08-30 14:02
閱讀 2733·2019-08-29 17:24
閱讀 3377·2019-08-28 18:10
閱讀 2988·2019-08-28 18:03
閱讀 558·2019-08-26 12:01
閱讀 3378·2019-08-26 11:31
閱讀 1497·2019-08-26 10:29