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

Java AES256加密解密示例代碼

 更新時間:2019年10月28日 14:53:00   作者:失控的的狗蛋~  
這篇文章主要介紹了Java AES256加密解密示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

Java支持許多安全的加密算法,但是其中一些功能較弱,無法在安全性要求很高的應用程序中使用。例如,數(shù)據(jù)加密標準(DES)加密算法被認為是高度不安全的。今天介紹一下AES 256加密解密。

什么是 AES 256?

  • 高級加密標準 (英語:Advanced Encryption Standard,縮寫:AES ),在密碼學中又稱Rijndael加密法,是美國聯(lián)邦政府采用的一種區(qū)塊加密標準。這個標準用來替代原先的DES,已經(jīng)被多方分析且廣為全世界所使用。
  • AES是一種對稱加密算法。它旨在易于在硬件和軟件以及受限環(huán)境中實施,并提供針對各種攻擊技術(shù)的良好防御。AES是能夠使用大小為128、192和256位的密鑰處理128位塊的塊密碼。每個密碼分別使用128位,192位和256位的加密密鑰對128位塊中的數(shù)據(jù)進行加密和解密。它使用相同的密鑰進行加密和解密,因此發(fā)送方和接收方都必須知道并使用相同的秘密密鑰。

在下面的加密和解密示例中,我在UTF-8字符集中使用了base64編碼。用于顯示程序的輸出。也可以以字節(jié)數(shù)組格式存儲和驗證數(shù)據(jù)。

AES 256加密 

Java程序中,用于使用AES 256位對密碼(或任何信息)進行加密。

private static String secretKey = "boooooooooom!!!!";
private static String salt = "ssshhhhhhhhhhh!!!!";
 
public static String encrypt(String strToEncrypt, String secret)
{
  try
  {
    byte[] iv = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
    IvParameterSpec ivspec = new IvParameterSpec(iv);
     
    SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
    KeySpec spec = new PBEKeySpec(secretKey.toCharArray(), salt.getBytes(), 65536, 256);
    SecretKey tmp = factory.generateSecret(spec);
    SecretKeySpec secretKey = new SecretKeySpec(tmp.getEncoded(), "AES");
     
    Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
    cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivspec);
    return Base64.getEncoder().encodeToString(cipher.doFinal(strToEncrypt.getBytes("UTF-8")));
  }
  catch (Exception e)
  {
    System.out.println("Error while encrypting: " + e.toString());
  }
  return null;
}

AES 256解密

Java程序,用于使用AES 256位解密密碼(或任何信息)。 

private static String secretKey = "boooooooooom!!!!";
private static String salt = "ssshhhhhhhhhhh!!!!";
 
public static String decrypt(String strToDecrypt, String secret) {
  try
  {
    byte[] iv = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
    IvParameterSpec ivspec = new IvParameterSpec(iv);
     
    SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
    KeySpec spec = new PBEKeySpec(secretKey.toCharArray(), salt.getBytes(), 65536, 256);
    SecretKey tmp = factory.generateSecret(spec);
    SecretKeySpec secretKey = new SecretKeySpec(tmp.getEncoded(), "AES");
     
    Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
    cipher.init(Cipher.DECRYPT_MODE, secretKey, ivspec);
    return new String(cipher.doFinal(Base64.getDecoder().decode(strToDecrypt)));
  }
  catch (Exception e) {
    System.out.println("Error while decrypting: " + e.toString());
  }
  return null;
}

測試AES256加密和解密方法

用一個簡單的字符串測試我們的AES256加密和解密方法

public static void main(String[] args)
{
  String originalString = "www.csdn.net";
   
  String encryptedString = AES.encrypt(originalString, secretKey) ;
  String decryptedString = AES.decrypt(encryptedString, secretKey) ;
   
  System.out.println(originalString);
  System.out.println(encryptedString);
  System.out.println(decryptedString);
}

輸出結(jié)果

www.csdn.net
biXhp3Ha1fgxVEp48zHrvVoXMStmxPuAPHo3TVz5lHU=
www.csdn.net

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺談Java中格式化輸出

    淺談Java中格式化輸出

    這篇文章主要介紹了Java中格式化輸出,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • java動態(tài)代理和cglib動態(tài)代理示例分享

    java動態(tài)代理和cglib動態(tài)代理示例分享

    這篇文章主要介紹了java動態(tài)代理和cglib動態(tài)代理示例,JDK1.3之后,Java提供了動態(tài)代理的技術(shù),允許開發(fā)者在運行期間創(chuàng)建接口的代理實例,下面我們使用示例學習一下
    2014-03-03
  • Java監(jiān)聽器三種實現(xiàn)方法代碼解析

    Java監(jiān)聽器三種實現(xiàn)方法代碼解析

    這篇文章主要介紹了Java監(jiān)聽器三種實現(xiàn)方法代碼解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • Java for循環(huán)Map集合優(yōu)化實現(xiàn)解析

    Java for循環(huán)Map集合優(yōu)化實現(xiàn)解析

    這篇文章主要介紹了Java for循環(huán)Map集合優(yōu)化實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • idea如何指定MainClass

    idea如何指定MainClass

    文章介紹了如何在IntelliJ IDEA中設置Java后臺測試程序的MainClass,并分享了設置JDK版本和Project language level的方法
    2024-11-11
  • Java最簡潔數(shù)據(jù)結(jié)構(gòu)之冒泡排序快速理解

    Java最簡潔數(shù)據(jù)結(jié)構(gòu)之冒泡排序快速理解

    冒泡排序是編程中數(shù)據(jù)結(jié)構(gòu)繞不過的一個基礎點,有關(guān)于冒泡排序的文章也有很多,但可能會比較繚亂未能理解,本章將一子u為簡潔明了的例圖帶你通關(guān)冒泡排序
    2021-11-11
  • Java模擬HTTP Get Post請求 輕松實現(xiàn)校園BBS自動回帖

    Java模擬HTTP Get Post請求 輕松實現(xiàn)校園BBS自動回帖

    這篇文章主要介紹了Java模擬HTTP Get Post請求,輕松實現(xiàn)校園BBS自動回帖,感興趣的小伙伴們可以參考一下
    2015-12-12
  • Springboot+netty實現(xiàn)Web聊天室

    Springboot+netty實現(xiàn)Web聊天室

    這篇文章主要介紹了利用springboot+netty實現(xiàn)一個簡單Web聊天室,文中有非常詳細的代碼示例,對正在學習Java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-12-12
  • maven項目無法讀取到resource文件夾的問題

    maven項目無法讀取到resource文件夾的問題

    這篇文章主要介紹了maven項目無法讀取到resource文件夾的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Kotlin lateinit與by lazy案例詳解

    Kotlin lateinit與by lazy案例詳解

    這篇文章主要介紹了Kotlin lateinit與by lazy案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-09-09

最新評論

太湖县| 东兰县| 东莞市| 茶陵县| 弥勒县| 陆丰市| 大安市| 福清市| 新密市| 牡丹江市| 诸城市| 商南县| 吉木乃县| 藁城市| 什邡市| 南涧| 个旧市| 渭源县| 青龙| 鄂州市| 昌宁县| 清河县| 庄河市| 鄢陵县| 扶余县| 余庆县| 呼图壁县| 阜宁县| 怀远县| 军事| 平江县| 马龙县| 临沭县| 来安县| 通许县| 措美县| 温宿县| 抚顺市| 聊城市| 上杭县| 汶川县|