最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java 實現(xiàn)對稱加密算法

 更新時間:2020年11月20日 11:45:38   作者:自律給我自由  
這篇文章主要介紹了Java 實現(xiàn)對稱加密算法的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下

概述

采用單鑰密碼系統(tǒng)的加密方法,同一個密鑰可以同時用作信息的加密和解密,這種加密方法稱為對稱加密,也稱為單密鑰加密。在對稱加密算法中,DES算法最具有代表性,DESede是DES算法的變種,AES算法則作為DES算法的替代者。

DES

DES(Data Encryption Standard),即數(shù)據(jù)加密標(biāo)準,是一種使用密鑰加密的塊算法,1977年被美國聯(lián)邦政府的國家標(biāo)準局確定為聯(lián)邦資料處理標(biāo)準(FIPS),并授權(quán)在非密級政府通信中使用,隨后該算法在國際上廣泛流傳開來。

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;

public class DesUtil {

  /**
   * DES加密
   * @param content 待加密數(shù)據(jù)
   * @param key 密鑰
   * @return
   * @throws Exception
   */
  public static String desEncrypt(String content, String key) throws Exception {
    //指定加密算法、加密模式、填充模式
    Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
    //創(chuàng)建加密規(guī)則:指定key和加密類型
    SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "DES");
    //指定加密模式為加密,指定加密規(guī)則
    cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
    //調(diào)用加密方法
    byte[] result = cipher.doFinal(content.getBytes());
    //用Base64編碼
    return new String(Base64.getEncoder().encode(result));
  }

  /**
   * DES解密
   * @param content 待解密數(shù)據(jù)
   * @param key 密鑰
   * @return
   * @throws Exception
   */
  public static String desDecrypt(String content, String key) throws Exception {
    //Base64解碼
    byte[] result = Base64.getDecoder().decode(content);
    //指定加密算法、加密模式、填充模式
    Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
    //創(chuàng)建加密規(guī)則:指定key和加密類型
    SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "DES");
    //指定加密模式為解密,指定加密規(guī)則
    cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
    return new String(cipher.doFinal(result));
  }

  public static void main(String[] args) throws Exception {
    //key要8位,不然會報錯:java.security.InvalidKeyException: Wrong key size
    String key = "12345678";
    //待加密數(shù)據(jù)
    String content = "對稱加密算法";

    //加密
    System.out.println(desEncrypt(content, key));//qDhh3hjbd+/TESXcV0YxC4ArDlFR1Mor

    //解密
    System.out.println(desDecrypt("qDhh3hjbd+/TESXcV0YxC4ArDlFR1Mor", key));//對稱加密算法
  }
}

DESede

DESede是由DES改進后的一種對稱加密算法,針對其密鑰長度偏短和迭代次數(shù)偏少等問題做了相應(yīng)改進,提高了安全強度。

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;

public class DesedeUtil {

  /**
   * Desede加密
   * @param content 待加密數(shù)據(jù)
   * @param key 密鑰
   * @return
   * @throws Exception
   */
  public static String desEncrypt(String content, String key) throws Exception {
    //指定加密算法、加密模式、填充模式
    Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");
    //創(chuàng)建加密規(guī)則:指定key和加密類型
    SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "DESede");
    //指定加密模式為加密,指定加密規(guī)則
    cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
    //調(diào)用加密方法
    byte[] result = cipher.doFinal(content.getBytes());
    //用Base64編碼
    return new String(Base64.getEncoder().encode(result));
  }

  /**
   * Desede解密
   * @param content 待解密數(shù)據(jù)
   * @param key 密鑰
   * @return
   * @throws Exception
   */
  public static String desDecrypt(String content, String key) throws Exception {
    //Base64解碼
    byte[] result = Base64.getDecoder().decode(content);
    //指定加密算法、加密模式、填充模式
    Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");
    //創(chuàng)建加密規(guī)則:指定key和加密類型
    SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "DESede");
    //指定加密模式為解密,指定加密規(guī)則
    cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
    return new String(cipher.doFinal(result));
  }

  public static void main(String[] args) throws Exception {
    //key要24位,不然會報錯:java.security.InvalidKeyException: Wrong key size
    String key = "123456781234567812345678";
    //待加密數(shù)據(jù)
    String content = "對稱加密算法";

    //加密
    System.out.println(desEncrypt(content, key));//qDhh3hjbd+/TESXcV0YxC4ArDlFR1Mor

    //解密
    System.out.println(desDecrypt("qDhh3hjbd+/TESXcV0YxC4ArDlFR1Mor", key));//對稱加密算法
  }
}

AES

AES(Advanced Encryption Standard),即高級加密標(biāo)準,在密碼學(xué)中又稱Rijndael加密法,是美國聯(lián)邦政府采用的一種區(qū)塊加密標(biāo)準。這個標(biāo)準用來替代原先的DES,已經(jīng)被多方分析且廣為全世界所使用。

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;

public class AesUtil {

  /**
   * aes加密
   * @param content 待加密數(shù)據(jù)
   * @param key 密鑰
   * @return
   * @throws Exception
   */
  public static String aesEncrypt(String content, String key) throws Exception {
    //指定加密算法
    Cipher cipher = Cipher.getInstance("AES");
    //創(chuàng)建加密規(guī)則:指定key和加密類型
    SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");
    //指定加密模式為加密,指定加密規(guī)則
    cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
    //調(diào)用加密方法
    byte[] result = cipher.doFinal(content.getBytes());
    //用Base64編碼
    return new String(Base64.getEncoder().encode(result));
  }

  /**
   * aes解密
   * @param content 待解密數(shù)據(jù)
   * @param key 密鑰
   * @return
   * @throws Exception
   */
  public static String aesDecrypt(String content, String key) throws Exception {
    //Base64解碼
    byte[] result = Base64.getDecoder().decode(content);
    //指定加密算法
    Cipher cipher = Cipher.getInstance("AES");
    //創(chuàng)建加密規(guī)則:指定key和加密類型
    SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");
    //指定加密模式為解密,指定加密規(guī)則
    cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
    return new String(cipher.doFinal(result));
  }

  public static void main(String[] args) throws Exception {
    //key要16/24/32位,不然會報錯:java.security.InvalidKeyException: Wrong key size
    String key = "12345678123456781234567812345678";
    String content = "對稱加密算法";

    //加密
    System.out.println(aesEncrypt(content, key));//yrdeR6atwBX0yeXzudk/al6q8K61gyPylX7GfwsKP9w=

    //解密
    System.out.println(aesDecrypt("yrdeR6atwBX0yeXzudk/al6q8K61gyPylX7GfwsKP9w=", key));
  }
}

以上就是Java 實現(xiàn)對稱加密算法的詳細內(nèi)容,更多關(guān)于Java 對稱加密算法的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • spring如何使用xml裝配bean

    spring如何使用xml裝配bean

    這篇文章主要介紹了spring如何使用xml裝配bean,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • Java網(wǎng)絡(luò)編程基礎(chǔ)用法詳解

    Java網(wǎng)絡(luò)編程基礎(chǔ)用法詳解

    網(wǎng)絡(luò)編程是指編寫運行在多個設(shè)備(計算機)的程序,這些設(shè)備都通過網(wǎng)絡(luò)連接起來,本文將帶大家詳細了解Java的網(wǎng)絡(luò)編程,文中有相關(guān)的代碼示例,需要的朋友可以參考下
    2023-05-05
  • Java使用itextpdf實現(xiàn)PDF轉(zhuǎn)文本以及轉(zhuǎn)圖片

    Java使用itextpdf實現(xiàn)PDF轉(zhuǎn)文本以及轉(zhuǎn)圖片

    PDF轉(zhuǎn)文本的插件常用的有pdfbox ,itextpdf 和 spire.pdf,本文主要介紹如何使用itextpdf實現(xiàn)PDF轉(zhuǎn)文本以及轉(zhuǎn)圖片,需要的可以參考一下
    2025-01-01
  • 淺談@RequestParam 參數(shù)是否必須傳的問題

    淺談@RequestParam 參數(shù)是否必須傳的問題

    這篇文章主要介紹了淺談@RequestParam 參數(shù)是否必須傳的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Springboot使用jsp具體案例解析

    Springboot使用jsp具體案例解析

    這篇文章主要介紹了Springboot使用jsp具體案例解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • java中關(guān)于命令執(zhí)行匯總

    java中關(guān)于命令執(zhí)行匯總

    這篇文章主要介紹了java中關(guān)于命令執(zhí)行匯總,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • mybatisPlus填坑之邏輯刪除的實現(xiàn)

    mybatisPlus填坑之邏輯刪除的實現(xiàn)

    本文主要介紹了mybatisPlus填坑之邏輯刪除的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • SpringBoot?整合Security權(quán)限控制的初步配置

    SpringBoot?整合Security權(quán)限控制的初步配置

    這篇文章主要為大家介紹了SpringBoot?整合Security權(quán)限控制的初步配置實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • IDEA設(shè)置允許一個類并行的方法

    IDEA設(shè)置允許一個類并行的方法

    這篇文章主要介紹了IDEA設(shè)置允許一個類并行的方法,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • springboot2自動加載sql文件的實現(xiàn)

    springboot2自動加載sql文件的實現(xiàn)

    本文主要介紹了springboot2自動加載sql文件的實現(xiàn),通過配置文件或注解的方式,我們可以輕松地將SQL語句映射到數(shù)據(jù)庫中,實現(xiàn)自動加載,感興趣的可以了解一下
    2023-11-11

最新評論

巴塘县| 修文县| 渭源县| 襄樊市| 诸城市| 光泽县| 济宁市| 彭州市| 邵东县| 航空| 石泉县| 洞口县| 乌恰县| 清苑县| 明水县| 普安县| 武强县| 河东区| 南陵县| 邹城市| 富锦市| 麟游县| 扎鲁特旗| 六枝特区| 天水市| 双流县| 桑日县| 界首市| 溧水县| 天水市| 沐川县| 波密县| 铜陵市| 古丈县| 清镇市| 拉萨市| 潼关县| 隆化县| 鸡东县| 南投市| 宣城市|