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

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

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

概述

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

DES

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

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ù)偏少等問題做了相應改進,提高了安全強度。

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),即高級加密標準,在密碼學中又稱Rijndael加密法,是美國聯(lián)邦政府采用的一種區(qū)塊加密標準。這個標準用來替代原先的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)容,更多關于Java 對稱加密算法的資料請關注腳本之家其它相關文章!

相關文章

  • spring如何使用xml裝配bean

    spring如何使用xml裝配bean

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

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

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

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

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

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

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

    Springboot使用jsp具體案例解析

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

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

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

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

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

    SpringBoot?整合Security權限控制的初步配置

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

    IDEA設置允許一個類并行的方法

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

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

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

最新評論

泰来县| 汝城县| 巴林左旗| 安丘市| 九龙坡区| 贺兰县| 曲靖市| 米易县| 隆子县| 福鼎市| 东丽区| 奎屯市| 托里县| 璧山县| 鄂托克前旗| 乐昌市| 遂川县| 颍上县| 定边县| 鄂州市| 中西区| 饶阳县| 铁岭市| 施甸县| 海伦市| 扶沟县| 天祝| 临泽县| 汽车| 花莲县| 漠河县| 大安市| 华坪县| 新密市| 白银市| 固原市| 弥勒县| 徐汇区| 郁南县| 武城县| 红河县|