怎么在java項目中實現(xiàn)一個AES可逆加密算法

怎么在java項目中實現(xiàn)一個AES可逆加密算法?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

咸陽網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)成立與2013年到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

具體內(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 是一種可逆加密算法,對用戶的敏感信息加密處理 對原始數(shù)據(jù)進行AES加密后,在進行Base64編碼轉(zhuǎn)化;
 */
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做轉(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 = "測試";
 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 + "毫秒");
 }
}

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。

標題名稱:怎么在java項目中實現(xiàn)一個AES可逆加密算法
網(wǎng)站路徑:http://bm7419.com/article22/igocjc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設(shè)網(wǎng)站收錄、Google域名注冊、網(wǎng)站建設(shè)外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)