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

java實(shí)現(xiàn)AES可逆加密算法

 更新時(shí)間:2019年03月22日 09:21:05   作者:風(fēng)過(guò)留痕丶  
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)AES可逆加密算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了java實(shí)現(xiàn)AES可逆加密算法的具體代碼,供大家參考,具體內(nèi)容如下

package com.hdu.encode;
 
 
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
 
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
 
/**
 * AES 是一種可逆加密算法,對(duì)用戶(hù)的敏感信息加密處理 對(duì)原始數(shù)據(jù)進(jìn)行AES加密后,在進(jìn)行Base64編碼轉(zhuǎn)化;
 */
public class AESOperator {
 /*
 * 加密用的Key 可以用26個(gè)字母和數(shù)字組成 此處使用AES-128-CBC加密模式,key需要為16位。
 */
// a0b891c2d563e4f7
 private String sKey = "abcdef0123456789";
 private String ivParameter = "0123456789abcdef";
 private static AESOperator instance = null;
 
 private AESOperator() {
 
 }
 
 public static AESOperator getInstance() {
 if (instance == null)
  instance = new AESOperator();
 return instance;
 }
 
 // 加密
 public String encrypt(String sSrc){
 String result = "";
 try {
  Cipher cipher;
  cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
  byte[] raw = sKey.getBytes();
  SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
  IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes());// 使用CBC模式,需要一個(gè)向量iv,可增加加密算法的強(qiáng)度
  cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
  byte[] encrypted = cipher.doFinal(sSrc.getBytes("utf-8"));
  result = new BASE64Encoder().encode(encrypted);
 } catch (Exception e) {
  e.printStackTrace();
 } 
 // 此處使用BASE64做轉(zhuǎn)碼。
 return result;
  
 }
 
 // 解密
 public String decrypt(String sSrc){
 try {
  byte[] raw = sKey.getBytes("ASCII");
  SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
  Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
  IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes());
  cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
  byte[] encrypted1 = new BASE64Decoder().decodeBuffer(sSrc);// 先用base64解密
  byte[] original = cipher.doFinal(encrypted1);
  String originalString = new String(original, "utf-8");
  return originalString;
 } catch (Exception ex) {
  ex.printStackTrace();
  return null;
 }
 }
 
public static void main(String[] args){
 // 需要加密的字串
 String cSrc = "測(cè)試";
 System.out.println(cSrc + " 長(zhǎng)度為" + cSrc.length());
 // 加密
 long lStart = System.currentTimeMillis();
 String enString = AESOperator.getInstance().encrypt(cSrc);
 System.out.println("加密后的字串是:" + enString + "長(zhǎng)度為" + enString.length());
 
 long lUseTime = System.currentTimeMillis() - lStart;
 System.out.println("加密耗時(shí):" + lUseTime + "毫秒");
 // 解密
 lStart = System.currentTimeMillis();
 String DeString = AESOperator.getInstance().decrypt(enString);
 System.out.println("解密后的字串是:" + DeString);
 lUseTime = System.currentTimeMillis() - lStart;
 System.out.println("解密耗時(shí):" + lUseTime + "毫秒");
 }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot調(diào)用Poi-tl實(shí)現(xiàn)渲染數(shù)據(jù)并生成Word文檔

    SpringBoot調(diào)用Poi-tl實(shí)現(xiàn)渲染數(shù)據(jù)并生成Word文檔

    這篇文章主要為大家詳細(xì)介紹了SpringBoot如何調(diào)用Poi-tl實(shí)現(xiàn)渲染數(shù)據(jù)并生成Word文檔,文中的示例代碼講解詳細(xì),有需要的小伙伴可以了解下
    2023-09-09
  • Java OOM 異常場(chǎng)景與排查過(guò)程(堆、棧、方法區(qū))

    Java OOM 異常場(chǎng)景與排查過(guò)程(堆、棧、方法區(qū))

    這篇文章主要介紹了Java OOM 異常場(chǎng)景與排查過(guò)程(堆、棧、方法區(qū)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • 解析spring cloud ouath2中的Eureka

    解析spring cloud ouath2中的Eureka

    這篇文章主要介紹了spring cloud ouath2中的Eureka,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • SpringCloud學(xué)習(xí)筆記之Feign遠(yuǎn)程調(diào)用

    SpringCloud學(xué)習(xí)筆記之Feign遠(yuǎn)程調(diào)用

    Feign是一個(gè)聲明式的http客戶(hù)端。其作用就是幫助我們優(yōu)雅的實(shí)現(xiàn)http請(qǐng)求的發(fā)送。本文將具體為大家介紹一下Feign的遠(yuǎn)程調(diào)用,感興趣的可以了解一下
    2021-12-12
  • java 使用線程做的一個(gè)簡(jiǎn)單的ATM存取款實(shí)例代碼

    java 使用線程做的一個(gè)簡(jiǎn)單的ATM存取款實(shí)例代碼

    線程 Thread 類(lèi),和 Runable 接口 比較兩者的特點(diǎn)和應(yīng)用領(lǐng)域.可以,直接繼承線程Thread類(lèi)。該方法編寫(xiě)簡(jiǎn)單,可以直接操作線程,適用于單重繼承情況,因而不能在繼承其他類(lèi),下面我們來(lái)看一個(gè)實(shí)例
    2013-08-08
  • Java中的ConcurrentHashMap集合源碼解析

    Java中的ConcurrentHashMap集合源碼解析

    這篇文章主要介紹了Java中的ConcurrentHashMap集合源碼解析,ConcurrentHashMap底層容器和HashMap相同,同樣是Node數(shù)組+鏈表+紅黑樹(shù),不同的是在原來(lái)的基礎(chǔ)之上使用了Synchronized+CAS來(lái)保證線程安全,下面我們來(lái)進(jìn)行源碼分析,需要的朋友可以參考下
    2023-11-11
  • springboot創(chuàng)建線程池的兩種方式小結(jié)

    springboot創(chuàng)建線程池的兩種方式小結(jié)

    這篇文章主要介紹了springboot創(chuàng)建線程池的兩種方式小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java數(shù)字圖像處理基礎(chǔ)使用imageio寫(xiě)圖像文件示例

    java數(shù)字圖像處理基礎(chǔ)使用imageio寫(xiě)圖像文件示例

    這篇文章主要介紹了Java 2D的圖像處理API,文章討論和提及的API都是基于JDK6的,Java中寫(xiě)一個(gè)圖像文件使用ImageIO對(duì)象即可,下面看代碼吧
    2014-01-01
  • java導(dǎo)出csv格式文件的方法

    java導(dǎo)出csv格式文件的方法

    這篇文章主要為大家詳細(xì)介紹了java導(dǎo)出csv格式文件的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • Java方法覆蓋重寫(xiě)實(shí)現(xiàn)原理解析

    Java方法覆蓋重寫(xiě)實(shí)現(xiàn)原理解析

    這篇文章主要介紹了Java方法覆蓋重寫(xiě)實(shí)現(xiàn)原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12

最新評(píng)論

济南市| 垦利县| 洪泽县| 嘉义县| 邹城市| 翁源县| 库伦旗| 祁阳县| 辽阳市| 清原| 杂多县| 丘北县| 余干县| 巢湖市| 昌平区| 宜阳县| 凤台县| 洛阳市| 柳河县| 屏山县| 友谊县| 明星| 新民市| 祥云县| 翼城县| 潍坊市| 石台县| 海宁市| 吉水县| 文化| 巫溪县| 灵璧县| 淳化县| 丰顺县| 济南市| 镇坪县| 林口县| 宜君县| 大洼县| 尉氏县| 吉木乃县|