成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JAVA加密算法(3)- 對稱加密算法(DES、3DES、AES)

xiaoqibTn / 3225人閱讀

摘要:對稱加密算法概念加密密鑰和解密密鑰相同,大部分算法加密揭秘過程互逆。特點算法公開相比非對稱加密計算量小加密速度快效率高。

對稱加密算法概念

加密密鑰和解密密鑰相同,大部分算法加密揭秘過程互逆。

特點:算法公開、(相比非對稱加密)計算量小、加密速度快、效率高。

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

常用對稱加密算法

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();

說明:
1.通過「KeyGenerator.getInstance("DES")」生成密鑰,
2.參數(shù)為算法名稱:分別對應(yīng)DES、DESede(即3DES)、AES
3.每種算法密鑰長度參數(shù):DES(56),3DES(112,168),AES(192,256)

2.加/解密
//通過字節(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

相關(guān)文章

  • 慕課網(wǎng)_《Java實現(xiàn)對稱加密》學(xué)習(xí)總結(jié)

    時間: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...

    tomlingtm 評論0 收藏0
  • 常用加密算法探尋

    摘要:在開發(fā)過程中,常常用到各種加密方法和算法,本文總結(jié)了幾種常用加密方法的原理。非對稱加密原理非對稱加密算法需要兩個密鑰公開密鑰和私有密鑰。 在開發(fā)過程中,常常用到各種加密方法和算法,本文總結(jié)了幾種常用加密方法的原理。 對稱加密 showImg(https://segmentfault.com/img/bVbacxw?w=1128&h=468); 原理: 加密和解密數(shù)據(jù)使用同一個密鑰,適...

    Yu_Huang 評論0 收藏0
  • killBase系列 -- 密碼學(xué)(一)

    摘要:系列密碼學(xué)二傳送門密碼學(xué)一基礎(chǔ)密碼學(xué)算法分類消息編碼消息摘要類,類,對稱密碼非對稱密碼數(shù)字簽名五元組明文原始信息。非對稱密碼包提供給,,等非對稱加密算法。對稱加密算法在分布式網(wǎng)絡(luò)系統(tǒng)上使用較為困難,主要是因為密鑰管理困難,使用成本較高。 前言 最近一場面試,面試官問了我 對稱加密與非對稱加密的問題,雖然曾經(jīng)看過一些內(nèi)容,但是沒有系統(tǒng)的整理,所以當(dāng)被問的時候,腦子里一片空白,沒有回答上...

    tomato 評論0 收藏0
  • 加密解密算法介紹

    摘要:加密解密算法介紹算法目前常見有加密算法,散列算法,編碼算法,使用位關(guān)鍵字作為流加密算法加密技術(shù)通常分為兩大類對稱式和非對稱式。對稱性加密算法有用途對稱加密算法用來對敏感數(shù)據(jù)等信息進行加密數(shù)據(jù)加密標(biāo)準(zhǔn),速度較快,適用于加密大量數(shù)據(jù)的場合。 加密解密算法介紹 算法目前常見有: 加密算法,散列算法,Base64(編碼算法),https(SSL使用40位關(guān)鍵字作為RC4流加密算法) 加密技術(shù)通...

    ThinkSNS 評論0 收藏0
  • 加密解密

    摘要:協(xié)議在應(yīng)用層協(xié)議通信之前就已經(jīng)完成加密算法通信密鑰的協(xié)商及服務(wù)器認(rèn)證工作。數(shù)據(jù)加密之后,只有密鑰要用一個安全的方法傳送。 博文參考 http://sweetpotato.blog.51cto.com/533893/1662061 http://www.cnblogs.com/jasperhsu/p/5107533.html http://www.178linux.com/77188 s...

    zero 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<