jquery java aes_Java和Jquery AES加解密

该博客介绍了一个Java实现的AES加解密工具类,包括加密和解密方法,以及与Jquery配合使用的示例。内容涉及到AES算法、Base64编码和密钥管理,确保前后端数据安全传输。
摘要由CSDN通过智能技术生成

package com.vji.snail.utils;

import java.math.BigInteger;

import javax.crypto.Cipher;

import javax.crypto.KeyGenerator;

import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.codec.binary.Base64;

import org.apache.commons.lang.StringUtils;

public class AESUtils {

//密钥 (需要前端和后端保持一致)

private static final String KEY = "abcdks9abcd11g12";

//算法

private static final String ALGORITHMSTR = "AES/ECB/PKCS5Padding";

/**

* aes解密

* @param encrypt 内容

* @return

* @throws Exception

*/

public static String decrypt(String encrypt) {

try {

return decrypt(encrypt, KEY);

} catch (Exception e) {

e.printStackTrace();

return "";

}

}

/**

* aes加密

* @param content

* @return

* @throws Exception

*/

public static String aesEncrypt(String content) {

try {

return encrypt(content, KEY);

} catch (Exception e) {

e.printStackTrace();

return "";

}

}

/**

* 将byte[]转为各种进制的字符串

* @param bytes byte[]

* @param radix 可以转换进制的范围,从Character.MIN_RADIX到Character.MAX_RADIX,超出范围后变为10进制

* @return 转换后的字符串

*/

public static String binary(byte[] bytes, int radix){

return new BigInteger(1, bytes).toString(radix);// 这里的1代表正数

}

/**

* base 64 encode

* @param bytes 待编码的byte[]

* @return 编码后的base 64 code

*/

public static String base64Encode(byte[] bytes){

return Base64.encodeBase64String(bytes);

}

/**

* base 64 decode

* @param base64Code 待解码的base 64 code

* @return 解码后的byte[]

* @throws Exception

*/

public static byte[] base64Decode(String base64Code) throws Exception{

return StringUtils.isEmpty(base64Code) ? null : Base64.decodeBase64(base64Code);

}

/**

* AES加密

* @param content 待加密的内容

* @param encryptKey 加密密钥

* @return 加密后的byte[]

* @throws Exception

*/

public static byte[] encryptToBytes(String content, String encryptKey) throws Exception {

KeyGenerator kgen = KeyGenerator.getInstance("AES");

kgen.init(128);

Cipher cipher = Cipher.getInstance(ALGORITHMSTR);

cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(encryptKey.getBytes(), "AES"));

return cipher.doFinal(content.getBytes("utf-8"));

}

/**

* AES加密为base 64 code

* @param content 待加密的内容

* @param encryptKey 加密密钥

* @return 加密后的base 64 code

* @throws Exception

*/

public static String encrypt(String content, String encryptKey) throws Exception {

return base64Encode(encryptToBytes(content, encryptKey));

}

/**

* AES加密为base 64 code

* @param content 待加密的内容

* @return 加密后的base 64 code

* @throws Exception

*/

public static String encrypt(String content) throws Exception {

return base64Encode(encryptToBytes(content, KEY));

}

/**

* AES解密

* @param encryptBytes 待解密的byte[]

* @param decryptKey 解密密钥

* @return 解密后的String

* @throws Exception

*/

public static String decryptByBytes(byte[] encryptBytes, String decryptKey) throws Exception {

KeyGenerator kgen = KeyGenerator.getInstance("AES");

kgen.init(128);

Cipher cipher = Cipher.getInstance(ALGORITHMSTR);

cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(decryptKey.getBytes(), "AES"));

byte[] decryptBytes = cipher.doFinal(encryptBytes);

return new String(decryptBytes);

}

/**

* 将base 64 code AES解密

* @param encryptStr 待解密的base 64 code

* @param decryptKey 解密密钥

* @return 解密后的string

* @throws Exception

*/

public static String decrypt(String encryptStr, String decryptKey) throws Exception {

return StringUtils.isEmpty(encryptStr) ? null : decryptByBytes(base64Decode(encryptStr), decryptKey);

}

/**

* 测试

*/

public static void main(String[] args) throws Exception {

String content = "ABCDEFGH";

System.out.println("加密前:" + content);

System.out.println("加密密钥和解密密钥:" + KEY);

String encrypt = encrypt(content);

System.out.println("加密后:" + encrypt);

String decrypt = decrypt(encrypt);

System.out.println("解密后:" + decrypt);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值