栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java实现AES可逆加密算法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java实现AES可逆加密算法

本文实例为大家分享了java实现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;
 

public class AESOperator {
 
// 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 + "毫秒");
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/138649.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号