欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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 是一種可逆加密算法,對用戶的敏感信息加密處理 對原始數(shù)據(jù)進行AES加密后,在進行Base64編碼轉化;
 */
public class AESOperator {
 /*
 * 加密用的Key 可以用26個字母和數(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模式,需要一個向量iv,可增加加密算法的強度
  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做轉碼。
 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 = "測試";
 System.out.println(cSrc + " 長度為" + cSrc.length());
 // 加密
 long lStart = System.currentTimeMillis();
 String enString = AESOperator.getInstance().encrypt(cSrc);
 System.out.println("加密后的字串是:" + enString + "長度為" + enString.length());
 
 long lUseTime = System.currentTimeMillis() - lStart;
 System.out.println("加密耗時:" + lUseTime + "毫秒");
 // 解密
 lStart = System.currentTimeMillis();
 String DeString = AESOperator.getInstance().decrypt(enString);
 System.out.println("解密后的字串是:" + DeString);
 lUseTime = System.currentTimeMillis() - lStart;
 System.out.println("解密耗時:" + lUseTime + "毫秒");
 }
}

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

相關文章

  • Java對象轉換的方案分享

    Java對象轉換的方案分享

    這篇文章主要介紹了Java對象轉換的方案分享,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-09-09
  • IDEA中springboot提示java:找不到符號符號:變量log問題

    IDEA中springboot提示java:找不到符號符號:變量log問題

    這篇文章主要介紹了IDEA中springboot提示java:找不到符號符號:變量log問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • 淺談Java反射與代理

    淺談Java反射與代理

    下面小編就為大家?guī)硪黄獪\談Java反射與代理。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • IntelliJ?IDEA?2022.2最新版本激活教程(親測可用版)永久激活工具分享

    IntelliJ?IDEA?2022.2最新版本激活教程(親測可用版)永久激活工具分享

    Jetbrains官方發(fā)布了?IntelliJ?IDEA2022.2?正式版,每次大的版本更新,都會有較大的調整和優(yōu)化,除本次更新全面擁抱?Java?17?外,還有對IDE?UI界面,安全性,便捷性等都做了調整和優(yōu)化完善,用戶體驗提升不少,相信后面會有不少小伙伴跟著更新
    2022-08-08
  • Springboot中Dependency not found解決方案

    Springboot中Dependency not found解決方案

    本文主要介紹了Springboot中Dependency not found解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-11-11
  • SpringMVC加載控制與Postmand的使用和Rest風格的引入及RestFul開發(fā)全面詳解

    SpringMVC加載控制與Postmand的使用和Rest風格的引入及RestFul開發(fā)全面詳解

    SpringMVC是一種基于Java,實現(xiàn)了Web MVC設計模式,請求驅動類型的輕量級Web框架,即使用了MVC架構模式的思想,將Web層進行職責解耦?;谡埱篁寗又傅木褪鞘褂谜埱?響應模型,框架的目的就是幫助我們簡化開發(fā),SpringMVC也是要簡化我們日常Web開發(fā)
    2022-10-10
  • Java實現(xiàn)簡單臺球游戲

    Java實現(xiàn)簡單臺球游戲

    這篇文章主要為大家詳細介紹了Java實現(xiàn)簡單臺球游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Java SpringMVC實現(xiàn)PC端網頁微信掃碼支付(完整版)

    Java SpringMVC實現(xiàn)PC端網頁微信掃碼支付(完整版)

    這篇文章主要介紹了Java SpringMVC實現(xiàn)PC端網頁微信掃碼支付(完整版)的相關資料,非常不錯具有一定的參考借鑒價值,需要的朋友可以參考下
    2016-11-11
  • 使用maven基本命令,打包包名問題

    使用maven基本命令,打包包名問題

    這篇文章主要介紹了使用maven基本命令,打包包名問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Spring Gateway基本使用示例小結

    Spring Gateway基本使用示例小結

    Springcloud Gateway使用了Webflux中的reactor-netty響應式編程組件,底層使用了Netty通訊框架,具體一些特征,本文結合實例代碼對Spring Gateway使用給大家介紹的非常詳細,感興趣的朋友一起看看吧
    2023-11-11

最新評論