本人手写已测试,大家可以参考使用

package com.mirana.frame.utils.encrypt;

import com.mirana.frame.constants.SysConstants;
import com.mirana.frame.utils.RandomUtils;
import com.mirana.frame.utils.SysPropUtils;
import com.mirana.frame.utils.encrypt.enumtype.AESMode;
import com.mirana.frame.utils.encrypt.enumtype.Algorithm;
import com.mirana.frame.utils.encrypt.enumtype.Padding;
import org.apache.commons.codec.binary.Base64;
import org.bouncycastle.jce.provider.BouncyCastleProvider; import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.Charset;
import java.security.Security; /**
* AES加解密工具类
*/
public class AESUtils {
// u8 charset
protected static final Charset CHARSET_U8 = SysConstants.DEFAULT_CHARSET;
// u8 string
protected static final String CHARSET_U8_STR = SysConstants.DEFAULT_CHARSET_NAME;
// 换行
protected static final String NEXTLINE = SysPropUtils.LINE_SEPARATOR; /**
* AES加密
*
* @param algorithm 加密算法
* @param aesMode 加密模式
* @param padding 补码方式
* @param serectKey 秘钥
* @param ivKey 向量偏移量
* @param content 要加密的文本
* @return
*/
public static String encrypt (Algorithm algorithm, AESMode aesMode, Padding padding, String serectKey, String ivKey, String content) {
// 加密模式
String encryptMode = algorithm.getValue() + "/" + aesMode.getValue() + "/" + padding.getValue(); StringBuffer encryptStr = new StringBuffer();
encryptStr.append("--------- [ Encrypt ] 加密算法:" + encryptMode + " ----------");
encryptStr.append(NEXTLINE);
encryptStr.append("--------- [ Encrypt ] 算法:" + algorithm.getValue() + ", 加密模式:" + aesMode.getValue() + ",补码: " + padding.getValue() + " ----------");
encryptStr.append(NEXTLINE);
encryptStr.append("--------- [ Encrypt ] 秘钥:" + serectKey + ", 向量偏移量:" + ivKey + " ----------");
encryptStr.append(NEXTLINE);
encryptStr.append("--------- [ Encrypt ] 加密前数据:" + content + " ----------");
encryptStr.append(NEXTLINE); String encyptedContent = null;
try {
// 1.根据指定算法AES自成密码器
String encyptType = encryptMode;
// 2.1 如果是NOPADDING,加密的字符bytes长度必须是16的倍数;
// 2.2 Java目前不支持ZEROPADDING
// 2.3 如果是PKCS7Padding,需要调用BouncyCastleProvider让java支持PKCS7Padding
switch (padding) {
case NO_PADDING:
int len = content.getBytes("UTF-8").length;
int m = len % 16;
if (m != 0) {
for (int i = 0; i < 16 - m; i++) {
content += " ";
}
}
break;
case ZERO_PADDING:
throw new IllegalArgumentException("抱歉,Java目前不支持" + Padding.ZERO_PADDING.getValue());
case PKCS7_PADDING:
Security.addProvider(new BouncyCastleProvider());
break;
default:
break;
}
SecretKeySpec keyspec = new SecretKeySpec(serectKey.getBytes(CHARSET_U8), algorithm.getValue());
// 3.初始化密码器,第一个参数为加密(Encrypt_mode)或者解密解密(Decrypt_mode)操作,第二个参数为使用的KEY,第三个参数为向量iv
Cipher cipher = Cipher.getInstance(encyptType);
// 4.ECB模式不需要使用IV,其他的模式都可以添加向量iv(不是必需)
switch (aesMode) {
case ECB:
cipher.init(Cipher.ENCRYPT_MODE, keyspec);
break;
default:
IvParameterSpec iv = new IvParameterSpec(ivKey.getBytes(CHARSET_U8));
cipher.init(Cipher.ENCRYPT_MODE, keyspec, iv);
break;
}
// 5.获取加密内容的字节数组(这里要设置为utf-8)不然内容中如果有中文和英文混合中文就会解密为乱码
byte[] byte_encode = content.getBytes(CHARSET_U8_STR);
// 6.根据密码器的初始化方式--加密:将数据加密
byte_encode = cipher.doFinal(byte_encode);
// 7.将加密后的数据转换为字符串
encyptedContent = new String(Base64.encodeBase64(byte_encode)); encryptStr.append("--------- [ Encrypt ] 加密后数据:" + encyptedContent + " ----------");
encryptStr.append(NEXTLINE); encryptStr.append("--------- [ Encrypt success ] 加密数据成功 ----------");
encryptStr.append(NEXTLINE); } catch (Exception e) {
encryptStr.append("--------- [ Encrypt failed ] 加密数据失败 ----------");
encryptStr.append(NEXTLINE);
e.printStackTrace();
} System.out.println(encryptStr); // 7.将字符串返回,错误返回null
return encyptedContent;
} public static String decrypt (Algorithm algorithm, AESMode aesMode, Padding padding, String serectKey, String ivKey, String content) {
// 加密模式
String encryptMode = algorithm.getValue() + "/" + aesMode.getValue() + "/" + padding.getValue(); StringBuffer decryptLog = new StringBuffer();
decryptLog.append("--------- [ Decrypt ] 加密算法:" + encryptMode + " ----------");
decryptLog.append(NEXTLINE);
decryptLog.append("--------- [ Decrypt ] 算法:" + algorithm.getValue() + ", 加密模式:" + aesMode.getValue() + ",补码: " + padding.getValue() + " ----------");
decryptLog.append(NEXTLINE);
decryptLog.append("--------- [ Decrypt ] 秘钥:" + serectKey + ",向量 偏移量:" + ivKey + " ----------");
decryptLog.append(NEXTLINE);
decryptLog.append("--------- [ Decrypt ] 解密前数据:" + content + " ----------");
decryptLog.append(NEXTLINE); String decryptContent = null;
try {
// 1.根据指定算法AES自成密码器
String encyptType = encryptMode;
// 2.1 如果是NOPADDING,加密的字符bytes长度必须是16的倍数;
// 2.2 Java目前不支持ZEROPADDING
// 2.3 如果是PKCS7Padding,需要调用BouncyCastleProvider让java支持PKCS7Padding
switch (padding) {
case NO_PADDING:
int len = content.getBytes("UTF-8").length;
int m = len % 16;
if (m != 0) {
for (int i = 0; i < 16 - m; i++) {
content += " ";
}
}
break;
case ZERO_PADDING:
throw new IllegalArgumentException("抱歉,Java目前不支持" + Padding.ZERO_PADDING.getValue());
case PKCS7_PADDING:
Security.addProvider(new BouncyCastleProvider());
break;
default:
break;
}
SecretKeySpec keyspec = new SecretKeySpec(serectKey.getBytes(CHARSET_U8), algorithm.getValue());
// 3.初始化密码器,第一个参数为加密(Encrypt_mode)或者解密解密(Decrypt_mode)操作,第二个参数为使用的KEY,第三个参数为向量iv
Cipher cipher = Cipher.getInstance(encyptType);
// 4.ECB模式不需要使用IV,其他的模式都可以添加向量iv(不是必需)
switch (aesMode) {
case ECB:
cipher.init(Cipher.DECRYPT_MODE, keyspec);
break;
default:
IvParameterSpec iv = new IvParameterSpec(ivKey.getBytes(CHARSET_U8));
cipher.init(Cipher.DECRYPT_MODE, keyspec, iv);
break;
}
// 5.将加密并编码后的内容解码成字节数组
byte[] byte_content = Base64.decodeBase64(content);
// 6.AES解密
byte_content = cipher.doFinal(byte_content);
// 7.使用u8生成解密字符串
decryptContent = new String(byte_content, CHARSET_U8_STR); decryptLog.append("--------- [ Decrypt ] 解密后数据:" + decryptContent + " ----------");
decryptLog.append(NEXTLINE); decryptLog.append("--------- [ Decrypt success ] 解密数据成功 ----------");
decryptLog.append(NEXTLINE); } catch (Exception e) {
decryptLog.append("--------- [ Decrypt failed ] 解密数据失败 ----------");
decryptLog.append(NEXTLINE);
e.printStackTrace();
} System.out.println(decryptLog); // 7.将字符串返回,错误返回null
return decryptContent;
} /**
* 测试AES加密算法
*
* @param algorithm 算法
* @param aesMode 加密模式
* @param padding 补码
* @param serectKeyLength 秘钥key长度
* @param ivKeyLength 向量iv长度*/
private static void testAESEncrypt (Algorithm algorithm, AESMode aesMode, Padding padding, int serectKeyLength, int ivKeyLength) {
String originalStr = "这是一个没有固定长度的测试的字符串"; String serectKey = RandomUtils.getString(serectKeyLength);
String ivKey = RandomUtils.getString(ivKeyLength); String encryptContent = encrypt(algorithm, aesMode, padding, serectKey, ivKey, originalStr);
String decryptContent = decrypt(algorithm, aesMode, padding, serectKey, ivKey, encryptContent);
System.out.println("原字符串: " + originalStr);
System.out.println("加密后字符串: " + encryptContent);
System.out.println("解密后字符串: " + decryptContent);
System.out.println("");
} public static void main (String[] args) {
// // AES/CBC/*
//
// // AES/CBC/NO_PADDING
// testAESEncrypt(Algorithm.AES, AESMode.CBC, Padding.NO_PADDING, 16, 16);
// // AES/CBC/PKCS5Padding
// testAESEncrypt(Algorithm.AES, AESMode.CBC, Padding.PKCS5_PADDING, 16, 16);
// // AES/CBC/PKCS7Padding
// testAESEncrypt(Algorithm.AES, AESMode.CBC, Padding.PKCS7_PADDING, 16, 16);
// // AES/CBC/ISO10126Padding
// testAESEncrypt(Algorithm.AES, AESMode.CBC, Padding.ISO10126Padding, 16, 16); // ******************************************************************** // // AES/ECB/*
//
// // AES/ECB/NO_PADDING
// testAESEncrypt(Algorithm.AES, AESMode.ECB, Padding.NO_PADDING, 16, 16);
// // AES/ECB/PKCS5_PADDING
// testAESEncrypt(Algorithm.AES, AESMode.ECB, Padding.PKCS5_PADDING, 16, 16);
// // AES/ECB/PKCS7_PADDING
// testAESEncrypt(Algorithm.AES, AESMode.ECB, Padding.PKCS7_PADDING, 16, 16);
// // AES/ECB/ISO10126Padding
// testAESEncrypt(Algorithm.AES, AESMode.ECB, Padding.ISO10126Padding, 16, 16); // ******************************************************************** // // AES/CFB/*
//
// // AES/CFB/NO_PADDING
// testAESEncrypt(Algorithm.AES, AESMode.CFB, Padding.NO_PADDING, 16, 16);
// // AES/CFB/PKCS5_PADDING
// testAESEncrypt(Algorithm.AES, AESMode.CFB, Padding.PKCS5_PADDING, 16, 16);
// // AES/CFB/PKCS7_PADDING
// testAESEncrypt(Algorithm.AES, AESMode.CFB, Padding.PKCS7_PADDING, 16, 16);
// // AES/CFB/ISO10126Padding
// testAESEncrypt(Algorithm.AES, AESMode.CFB, Padding.ISO10126Padding, 16, 16); // ******************************************************************** // // AES/CTR/*
//
// // AES/CTR/NO_PADDING
// testAESEncrypt(Algorithm.AES, AESMode.CTR, Padding.NO_PADDING, 16, 16);
// // AES/CTR/PKCS5_PADDING
// testAESEncrypt(Algorithm.AES, AESMode.CTR, Padding.PKCS5_PADDING, 16, 16);
// // AES/CTR/PKCS7_PADDING
// testAESEncrypt(Algorithm.AES, AESMode.CTR, Padding.PKCS7_PADDING, 16, 16);
// // AES/CTR/ISO10126Padding
// testAESEncrypt(Algorithm.AES, AESMode.CTR, Padding.ISO10126Padding, 16, 16); // ******************************************************************** // AES/OFB/*
//
// AES/OFB/NO_PADDING
testAESEncrypt(Algorithm.AES, AESMode.OFB, Padding.NO_PADDING, 16, 16);
// AES/OFB/PKCS5_PADDING
testAESEncrypt(Algorithm.AES, AESMode.OFB, Padding.PKCS5_PADDING, 16, 16);
// AES/OFB/PKCS7_PADDING
testAESEncrypt(Algorithm.AES, AESMode.OFB, Padding.PKCS7_PADDING, 16, 16);
// AES/OFB/ISO10126Padding
testAESEncrypt(Algorithm.AES, AESMode.OFB, Padding.ISO10126Padding, 16, 16); } }

AES/CBC/*,测试输出:

--------- [ Encrypt ] 加密算法:AES/CBC/NoPadding ----------
--------- [ Encrypt ] 算法:AES, 加密模式:CBC,补码: NoPadding ----------
--------- [ Encrypt ] 秘钥:6AC587CB373C4629, 向量偏移量:EBC9591C109547AC ----------
--------- [ Encrypt ] 加密前数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Encrypt ] 加密后数据:woWJayaezRlTAZAwwo0f6rKd3QGwY4kwyeVcwERMnMrFJWigAKeRgghmaPVi+eRqnfZrYGUWVy+e9QAuIN4CtQ== ----------
--------- [ Encrypt success ] 加密数据成功 ---------- --------- [ Decrypt ] 加密算法:AES/CBC/NoPadding ----------
--------- [ Decrypt ] 算法:AES, 加密模式:CBC,补码: NoPadding ----------
--------- [ Decrypt ] 秘钥:6AC587CB373C4629,向量 偏移量:EBC9591C109547AC ----------
--------- [ Decrypt ] 解密前数据:woWJayaezRlTAZAwwo0f6rKd3QGwY4kwyeVcwERMnMrFJWigAKeRgghmaPVi+eRqnfZrYGUWVy+e9QAuIN4CtQ== ----------
--------- [ Decrypt ] 解密后数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Decrypt success ] 解密数据成功 ---------- 原字符串: 这是一个没有固定长度的测试的字符串
加密后字符串: woWJayaezRlTAZAwwo0f6rKd3QGwY4kwyeVcwERMnMrFJWigAKeRgghmaPVi+eRqnfZrYGUWVy+e9QAuIN4CtQ==
解密后字符串: 这是一个没有固定长度的测试的字符串 --------- [ Encrypt ] 加密算法:AES/CBC/PKCS5Padding ----------
--------- [ Encrypt ] 算法:AES, 加密模式:CBC,补码: PKCS5Padding ----------
--------- [ Encrypt ] 秘钥:C1A4F2FD73AA4497, 向量偏移量:45A85E8876BC45B3 ----------
--------- [ Encrypt ] 加密前数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Encrypt ] 加密后数据:HHN4NMy9sJx/LJX2ktHg0ZMhvYjcLFTBe6fPBD08Mcf1n+Epv/ymd47d+tmfivoLrjjlUo+WN5y2qkKmtZPWeA== ----------
--------- [ Encrypt success ] 加密数据成功 ---------- --------- [ Decrypt ] 加密算法:AES/CBC/PKCS5Padding ----------
--------- [ Decrypt ] 算法:AES, 加密模式:CBC,补码: PKCS5Padding ----------
--------- [ Decrypt ] 秘钥:C1A4F2FD73AA4497,向量 偏移量:45A85E8876BC45B3 ----------
--------- [ Decrypt ] 解密前数据:HHN4NMy9sJx/LJX2ktHg0ZMhvYjcLFTBe6fPBD08Mcf1n+Epv/ymd47d+tmfivoLrjjlUo+WN5y2qkKmtZPWeA== ----------
--------- [ Decrypt ] 解密后数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Decrypt success ] 解密数据成功 ---------- 原字符串: 这是一个没有固定长度的测试的字符串
加密后字符串: HHN4NMy9sJx/LJX2ktHg0ZMhvYjcLFTBe6fPBD08Mcf1n+Epv/ymd47d+tmfivoLrjjlUo+WN5y2qkKmtZPWeA==
解密后字符串: 这是一个没有固定长度的测试的字符串 --------- [ Encrypt ] 加密算法:AES/CBC/PKCS7Padding ----------
--------- [ Encrypt ] 算法:AES, 加密模式:CBC,补码: PKCS7Padding ----------
--------- [ Encrypt ] 秘钥:543C44AA40C24780, 向量偏移量:5DAF6CE309044D52 ----------
--------- [ Encrypt ] 加密前数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Encrypt ] 加密后数据:iQEvpBVx3gX+bzDykW0WSvfVd0aqRG17q82asC/QsDWD2nqScl4peGZhedgRHLo54gcJNMgPVjmS2Uib5PHBww== ----------
--------- [ Encrypt success ] 加密数据成功 ---------- --------- [ Decrypt ] 加密算法:AES/CBC/PKCS7Padding ----------
--------- [ Decrypt ] 算法:AES, 加密模式:CBC,补码: PKCS7Padding ----------
--------- [ Decrypt ] 秘钥:543C44AA40C24780,向量 偏移量:5DAF6CE309044D52 ----------
--------- [ Decrypt ] 解密前数据:iQEvpBVx3gX+bzDykW0WSvfVd0aqRG17q82asC/QsDWD2nqScl4peGZhedgRHLo54gcJNMgPVjmS2Uib5PHBww== ----------
--------- [ Decrypt ] 解密后数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Decrypt success ] 解密数据成功 ---------- 原字符串: 这是一个没有固定长度的测试的字符串
加密后字符串: iQEvpBVx3gX+bzDykW0WSvfVd0aqRG17q82asC/QsDWD2nqScl4peGZhedgRHLo54gcJNMgPVjmS2Uib5PHBww==
解密后字符串: 这是一个没有固定长度的测试的字符串 --------- [ Encrypt ] 加密算法:AES/CBC/ISO10126Padding ----------
--------- [ Encrypt ] 算法:AES, 加密模式:CBC,补码: ISO10126Padding ----------
--------- [ Encrypt ] 秘钥:F22B64EF4024479F, 向量偏移量:0F62A6138C934A6D ----------
--------- [ Encrypt ] 加密前数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Encrypt ] 加密后数据:rb+fi0H6aiezRXc7vDiCj/FK5jecV5oVYPaGeen9gI/Or9PDk9DMHdu44u09LcmmpuIbDW7S5gNt6u7cea/Fsg== ----------
--------- [ Encrypt success ] 加密数据成功 ---------- --------- [ Decrypt ] 加密算法:AES/CBC/ISO10126Padding ----------
--------- [ Decrypt ] 算法:AES, 加密模式:CBC,补码: ISO10126Padding ----------
--------- [ Decrypt ] 秘钥:F22B64EF4024479F,向量 偏移量:0F62A6138C934A6D ----------
--------- [ Decrypt ] 解密前数据:rb+fi0H6aiezRXc7vDiCj/FK5jecV5oVYPaGeen9gI/Or9PDk9DMHdu44u09LcmmpuIbDW7S5gNt6u7cea/Fsg== ----------
--------- [ Decrypt ] 解密后数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Decrypt success ] 解密数据成功 ---------- 原字符串: 这是一个没有固定长度的测试的字符串
加密后字符串: rb+fi0H6aiezRXc7vDiCj/FK5jecV5oVYPaGeen9gI/Or9PDk9DMHdu44u09LcmmpuIbDW7S5gNt6u7cea/Fsg==
解密后字符串: 这是一个没有固定长度的测试的字符串

AES/ECB/*,测试输出:

--------- [ Encrypt ] 加密算法:AES/ECB/NoPadding ----------
--------- [ Encrypt ] 算法:AES, 加密模式:ECB,补码: NoPadding ----------
--------- [ Encrypt ] 秘钥:8DE67AB814CB4E1D, 向量偏移量:6C7AA2934E2241C4 ----------
--------- [ Encrypt ] 加密前数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Encrypt ] 加密后数据:nf5e8bxSnhpbOblsga54XxmqIytpXQG6Aim9VAXKx/nIH9Bc2akXOwwkUGwpJazC1yYwzm0ydeH+EQ437W7dUw== ----------
--------- [ Encrypt success ] 加密数据成功 ---------- --------- [ Decrypt ] 加密算法:AES/ECB/NoPadding ----------
--------- [ Decrypt ] 算法:AES, 加密模式:ECB,补码: NoPadding ----------
--------- [ Decrypt ] 秘钥:8DE67AB814CB4E1D,向量 偏移量:6C7AA2934E2241C4 ----------
--------- [ Decrypt ] 解密前数据:nf5e8bxSnhpbOblsga54XxmqIytpXQG6Aim9VAXKx/nIH9Bc2akXOwwkUGwpJazC1yYwzm0ydeH+EQ437W7dUw== ----------
--------- [ Decrypt ] 解密后数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Decrypt success ] 解密数据成功 ---------- 原字符串: 这是一个没有固定长度的测试的字符串
加密后字符串: nf5e8bxSnhpbOblsga54XxmqIytpXQG6Aim9VAXKx/nIH9Bc2akXOwwkUGwpJazC1yYwzm0ydeH+EQ437W7dUw==
解密后字符串: 这是一个没有固定长度的测试的字符串 --------- [ Encrypt ] 加密算法:AES/ECB/PKCS5Padding ----------
--------- [ Encrypt ] 算法:AES, 加密模式:ECB,补码: PKCS5Padding ----------
--------- [ Encrypt ] 秘钥:8B2A01576D554DF0, 向量偏移量:A8968C7DFE5B41E0 ----------
--------- [ Encrypt ] 加密前数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Encrypt ] 加密后数据:vxlE6f4pcWvt9v6Qdl5OyEBSNgTLedVyoEaGQYKchoDj5iZNDC8yUk82wDTmxQTJaFJskitvH89JCtCuKP/4jg== ----------
--------- [ Encrypt success ] 加密数据成功 ---------- --------- [ Decrypt ] 加密算法:AES/ECB/PKCS5Padding ----------
--------- [ Decrypt ] 算法:AES, 加密模式:ECB,补码: PKCS5Padding ----------
--------- [ Decrypt ] 秘钥:8B2A01576D554DF0,向量 偏移量:A8968C7DFE5B41E0 ----------
--------- [ Decrypt ] 解密前数据:vxlE6f4pcWvt9v6Qdl5OyEBSNgTLedVyoEaGQYKchoDj5iZNDC8yUk82wDTmxQTJaFJskitvH89JCtCuKP/4jg== ----------
--------- [ Decrypt ] 解密后数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Decrypt success ] 解密数据成功 ---------- 原字符串: 这是一个没有固定长度的测试的字符串
加密后字符串: vxlE6f4pcWvt9v6Qdl5OyEBSNgTLedVyoEaGQYKchoDj5iZNDC8yUk82wDTmxQTJaFJskitvH89JCtCuKP/4jg==
解密后字符串: 这是一个没有固定长度的测试的字符串 --------- [ Encrypt ] 加密算法:AES/ECB/PKCS7Padding ----------
--------- [ Encrypt ] 算法:AES, 加密模式:ECB,补码: PKCS7Padding ----------
--------- [ Encrypt ] 秘钥:444BE9008BF641CC, 向量偏移量:1BC7A338376F40FD ----------
--------- [ Encrypt ] 加密前数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Encrypt ] 加密后数据:7UOL6EVv1cZnJBlP4y7OFIIjD4rFFE/dhc/fxsyK/7ADhYMO/VM41O1fzDsqPcKrQ6CJWvvs7wgYd3iVAdQV5A== ----------
--------- [ Encrypt success ] 加密数据成功 ---------- --------- [ Decrypt ] 加密算法:AES/ECB/PKCS7Padding ----------
--------- [ Decrypt ] 算法:AES, 加密模式:ECB,补码: PKCS7Padding ----------
--------- [ Decrypt ] 秘钥:444BE9008BF641CC,向量 偏移量:1BC7A338376F40FD ----------
--------- [ Decrypt ] 解密前数据:7UOL6EVv1cZnJBlP4y7OFIIjD4rFFE/dhc/fxsyK/7ADhYMO/VM41O1fzDsqPcKrQ6CJWvvs7wgYd3iVAdQV5A== ----------
--------- [ Decrypt ] 解密后数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Decrypt success ] 解密数据成功 ---------- 原字符串: 这是一个没有固定长度的测试的字符串
加密后字符串: 7UOL6EVv1cZnJBlP4y7OFIIjD4rFFE/dhc/fxsyK/7ADhYMO/VM41O1fzDsqPcKrQ6CJWvvs7wgYd3iVAdQV5A==
解密后字符串: 这是一个没有固定长度的测试的字符串 --------- [ Encrypt ] 加密算法:AES/ECB/ISO10126Padding ----------
--------- [ Encrypt ] 算法:AES, 加密模式:ECB,补码: ISO10126Padding ----------
--------- [ Encrypt ] 秘钥:A5C275229A294B5E, 向量偏移量:EDE8FCD30D754440 ----------
--------- [ Encrypt ] 加密前数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Encrypt ] 加密后数据:J/auLz3vRV1nPIf7MHh1RPMEFlAbGFS7AyZeZJB0mdrl+ZmWlRVa4elbm0hHWVbjWcGiWCjZJ3LSIOXCYDIhUA== ----------
--------- [ Encrypt success ] 加密数据成功 ---------- --------- [ Decrypt ] 加密算法:AES/ECB/ISO10126Padding ----------
--------- [ Decrypt ] 算法:AES, 加密模式:ECB,补码: ISO10126Padding ----------
--------- [ Decrypt ] 秘钥:A5C275229A294B5E,向量 偏移量:EDE8FCD30D754440 ----------
--------- [ Decrypt ] 解密前数据:J/auLz3vRV1nPIf7MHh1RPMEFlAbGFS7AyZeZJB0mdrl+ZmWlRVa4elbm0hHWVbjWcGiWCjZJ3LSIOXCYDIhUA== ----------
--------- [ Decrypt ] 解密后数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Decrypt success ] 解密数据成功 ---------- 原字符串: 这是一个没有固定长度的测试的字符串
加密后字符串: J/auLz3vRV1nPIf7MHh1RPMEFlAbGFS7AyZeZJB0mdrl+ZmWlRVa4elbm0hHWVbjWcGiWCjZJ3LSIOXCYDIhUA==
解密后字符串: 这是一个没有固定长度的测试的字符串

AES/CFB/*,测试输出:

--------- [ Encrypt ] 加密算法:AES/CFB/NoPadding ----------
--------- [ Encrypt ] 算法:AES, 加密模式:CFB,补码: NoPadding ----------
--------- [ Encrypt ] 秘钥:2D8D04BF6B82403C, 向量偏移量:5ED121C9F82A451E ----------
--------- [ Encrypt ] 加密前数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Encrypt ] 加密后数据:NzxJu+Ojkaati0X6Ys05V29Jaci0cnnOTiEQif2PN00g7xq/5GGzrJC8QFd76stQHccthh4+yJONpJQfkwF6Sg== ----------
--------- [ Encrypt success ] 加密数据成功 ---------- --------- [ Decrypt ] 加密算法:AES/CFB/NoPadding ----------
--------- [ Decrypt ] 算法:AES, 加密模式:CFB,补码: NoPadding ----------
--------- [ Decrypt ] 秘钥:2D8D04BF6B82403C,向量 偏移量:5ED121C9F82A451E ----------
--------- [ Decrypt ] 解密前数据:NzxJu+Ojkaati0X6Ys05V29Jaci0cnnOTiEQif2PN00g7xq/5GGzrJC8QFd76stQHccthh4+yJONpJQfkwF6Sg== ----------
--------- [ Decrypt ] 解密后数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Decrypt success ] 解密数据成功 ---------- 原字符串: 这是一个没有固定长度的测试的字符串
加密后字符串: NzxJu+Ojkaati0X6Ys05V29Jaci0cnnOTiEQif2PN00g7xq/5GGzrJC8QFd76stQHccthh4+yJONpJQfkwF6Sg==
解密后字符串: 这是一个没有固定长度的测试的字符串 --------- [ Encrypt ] 加密算法:AES/CFB/PKCS5Padding ----------
--------- [ Encrypt ] 算法:AES, 加密模式:CFB,补码: PKCS5Padding ----------
--------- [ Encrypt ] 秘钥:357619F14C964136, 向量偏移量:68D8B163C9BF47D9 ----------
--------- [ Encrypt ] 加密前数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Encrypt ] 加密后数据:uuCGtpKDA9YfSCynXmmOrUOS2aYKOizDqoHVbHt+ZZpzJwPaQ//aDkyiHE5Ot3jaAaF6/aFC0YrufqXNI4PBgA== ----------
--------- [ Encrypt success ] 加密数据成功 ---------- --------- [ Decrypt ] 加密算法:AES/CFB/PKCS5Padding ----------
--------- [ Decrypt ] 算法:AES, 加密模式:CFB,补码: PKCS5Padding ----------
--------- [ Decrypt ] 秘钥:357619F14C964136,向量 偏移量:68D8B163C9BF47D9 ----------
--------- [ Decrypt ] 解密前数据:uuCGtpKDA9YfSCynXmmOrUOS2aYKOizDqoHVbHt+ZZpzJwPaQ//aDkyiHE5Ot3jaAaF6/aFC0YrufqXNI4PBgA== ----------
--------- [ Decrypt ] 解密后数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Decrypt success ] 解密数据成功 ---------- 原字符串: 这是一个没有固定长度的测试的字符串
加密后字符串: uuCGtpKDA9YfSCynXmmOrUOS2aYKOizDqoHVbHt+ZZpzJwPaQ//aDkyiHE5Ot3jaAaF6/aFC0YrufqXNI4PBgA==
解密后字符串: 这是一个没有固定长度的测试的字符串 --------- [ Encrypt ] 加密算法:AES/CFB/PKCS7Padding ----------
--------- [ Encrypt ] 算法:AES, 加密模式:CFB,补码: PKCS7Padding ----------
--------- [ Encrypt ] 秘钥:67DA51FE61514AFB, 向量偏移量:44B21C81448B4556 ----------
--------- [ Encrypt ] 加密前数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Encrypt ] 加密后数据:+kTQ3J3U8HtewHsrAZG3ps/1IuOSZlEw0nMlaeL4FW1XLA8TZ6XK+ztUfdEh6EoMboAtqs53EhsYumm8R3ap/Q== ----------
--------- [ Encrypt success ] 加密数据成功 ---------- --------- [ Decrypt ] 加密算法:AES/CFB/PKCS7Padding ----------
--------- [ Decrypt ] 算法:AES, 加密模式:CFB,补码: PKCS7Padding ----------
--------- [ Decrypt ] 秘钥:67DA51FE61514AFB,向量 偏移量:44B21C81448B4556 ----------
--------- [ Decrypt ] 解密前数据:+kTQ3J3U8HtewHsrAZG3ps/1IuOSZlEw0nMlaeL4FW1XLA8TZ6XK+ztUfdEh6EoMboAtqs53EhsYumm8R3ap/Q== ----------
--------- [ Decrypt ] 解密后数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Decrypt success ] 解密数据成功 ---------- 原字符串: 这是一个没有固定长度的测试的字符串
加密后字符串: +kTQ3J3U8HtewHsrAZG3ps/1IuOSZlEw0nMlaeL4FW1XLA8TZ6XK+ztUfdEh6EoMboAtqs53EhsYumm8R3ap/Q==
解密后字符串: 这是一个没有固定长度的测试的字符串 --------- [ Encrypt ] 加密算法:AES/CFB/ISO10126Padding ----------
--------- [ Encrypt ] 算法:AES, 加密模式:CFB,补码: ISO10126Padding ----------
--------- [ Encrypt ] 秘钥:A8E2F09BCD774223, 向量偏移量:FA7127821BCD4017 ----------
--------- [ Encrypt ] 加密前数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Encrypt ] 加密后数据:y7IFAcR0s++uzNtpLZGQLDJ4vLph/nh/+HxTN6+9OyWUuD8Bf1VdIHL+Bi7XcSic4Wq3IsXUl9c/qh8GpLH3nQ== ----------
--------- [ Encrypt success ] 加密数据成功 ---------- --------- [ Decrypt ] 加密算法:AES/CFB/ISO10126Padding ----------
--------- [ Decrypt ] 算法:AES, 加密模式:CFB,补码: ISO10126Padding ----------
--------- [ Decrypt ] 秘钥:A8E2F09BCD774223,向量 偏移量:FA7127821BCD4017 ----------
--------- [ Decrypt ] 解密前数据:y7IFAcR0s++uzNtpLZGQLDJ4vLph/nh/+HxTN6+9OyWUuD8Bf1VdIHL+Bi7XcSic4Wq3IsXUl9c/qh8GpLH3nQ== ----------
--------- [ Decrypt ] 解密后数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Decrypt success ] 解密数据成功 ---------- 原字符串: 这是一个没有固定长度的测试的字符串
加密后字符串: y7IFAcR0s++uzNtpLZGQLDJ4vLph/nh/+HxTN6+9OyWUuD8Bf1VdIHL+Bi7XcSic4Wq3IsXUl9c/qh8GpLH3nQ==
解密后字符串: 这是一个没有固定长度的测试的字符串

AES/CTR/*,测试输出:

--------- [ Encrypt ] 加密算法:AES/CTR/NoPadding ----------
--------- [ Encrypt ] 算法:AES, 加密模式:CTR,补码: NoPadding ----------
--------- [ Encrypt ] 秘钥:33812BC2AFEF4D28, 向量偏移量:C974012F5CEA489B ----------
--------- [ Encrypt ] 加密前数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Encrypt ] 加密后数据:4zLJWUfPzuFxhfZScOMDAUZHVV5r7nWd9bqoOJ530XPrSVC7hlw59Lh0P0695p4RyT0wlRzlBgny7LskEvk2uA== ----------
--------- [ Encrypt success ] 加密数据成功 ---------- --------- [ Decrypt ] 加密算法:AES/CTR/NoPadding ----------
--------- [ Decrypt ] 算法:AES, 加密模式:CTR,补码: NoPadding ----------
--------- [ Decrypt ] 秘钥:33812BC2AFEF4D28,向量 偏移量:C974012F5CEA489B ----------
--------- [ Decrypt ] 解密前数据:4zLJWUfPzuFxhfZScOMDAUZHVV5r7nWd9bqoOJ530XPrSVC7hlw59Lh0P0695p4RyT0wlRzlBgny7LskEvk2uA== ----------
--------- [ Decrypt ] 解密后数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Decrypt success ] 解密数据成功 ---------- 原字符串: 这是一个没有固定长度的测试的字符串
加密后字符串: 4zLJWUfPzuFxhfZScOMDAUZHVV5r7nWd9bqoOJ530XPrSVC7hlw59Lh0P0695p4RyT0wlRzlBgny7LskEvk2uA==
解密后字符串: 这是一个没有固定长度的测试的字符串 --------- [ Encrypt ] 加密算法:AES/CTR/PKCS5Padding ----------
--------- [ Encrypt ] 算法:AES, 加密模式:CTR,补码: PKCS5Padding ----------
--------- [ Encrypt ] 秘钥:1D98BAD34AE94641, 向量偏移量:091226AB46B44502 ----------
--------- [ Encrypt ] 加密前数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Encrypt ] 加密后数据:rXHbLqijNiBvvcrk34MblERIfL/AjRsho/IhpmrasAuFjZF8X+9j73X92EnmFXLrS5Kz ----------
--------- [ Encrypt success ] 加密数据成功 ---------- --------- [ Decrypt ] 加密算法:AES/CTR/PKCS5Padding ----------
--------- [ Decrypt ] 算法:AES, 加密模式:CTR,补码: PKCS5Padding ----------
--------- [ Decrypt ] 秘钥:1D98BAD34AE94641,向量 偏移量:091226AB46B44502 ----------
--------- [ Decrypt ] 解密前数据:rXHbLqijNiBvvcrk34MblERIfL/AjRsho/IhpmrasAuFjZF8X+9j73X92EnmFXLrS5Kz ----------
--------- [ Decrypt ] 解密后数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Decrypt success ] 解密数据成功 ---------- 原字符串: 这是一个没有固定长度的测试的字符串
加密后字符串: rXHbLqijNiBvvcrk34MblERIfL/AjRsho/IhpmrasAuFjZF8X+9j73X92EnmFXLrS5Kz
解密后字符串: 这是一个没有固定长度的测试的字符串 --------- [ Encrypt ] 加密算法:AES/CTR/PKCS7Padding ----------
--------- [ Encrypt ] 算法:AES, 加密模式:CTR,补码: PKCS7Padding ----------
--------- [ Encrypt ] 秘钥:A7AFF087BCEA4CB3, 向量偏移量:C6F372061F87400C ----------
--------- [ Encrypt ] 加密前数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Encrypt ] 加密后数据:nZt2UvnEMpsOdM9Ze2B5qQYws4sVbjqg6PzLRSuQRkUkapzGR98oEkt/DqBBCiEHmvVrjzQO8cPW0dG3Owh1RQ== ----------
--------- [ Encrypt success ] 加密数据成功 ---------- --------- [ Decrypt ] 加密算法:AES/CTR/PKCS7Padding ----------
--------- [ Decrypt ] 算法:AES, 加密模式:CTR,补码: PKCS7Padding ----------
--------- [ Decrypt ] 秘钥:A7AFF087BCEA4CB3,向量 偏移量:C6F372061F87400C ----------
--------- [ Decrypt ] 解密前数据:nZt2UvnEMpsOdM9Ze2B5qQYws4sVbjqg6PzLRSuQRkUkapzGR98oEkt/DqBBCiEHmvVrjzQO8cPW0dG3Owh1RQ== ----------
--------- [ Decrypt ] 解密后数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Decrypt success ] 解密数据成功 ---------- 原字符串: 这是一个没有固定长度的测试的字符串
加密后字符串: nZt2UvnEMpsOdM9Ze2B5qQYws4sVbjqg6PzLRSuQRkUkapzGR98oEkt/DqBBCiEHmvVrjzQO8cPW0dG3Owh1RQ==
解密后字符串: 这是一个没有固定长度的测试的字符串 --------- [ Encrypt ] 加密算法:AES/CTR/ISO10126Padding ----------
--------- [ Encrypt ] 算法:AES, 加密模式:CTR,补码: ISO10126Padding ----------
--------- [ Encrypt ] 秘钥:9CB9134F56294E57, 向量偏移量:2F53A1CBE07E467B ----------
--------- [ Encrypt ] 加密前数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Encrypt ] 加密后数据:ngt4WKtqwsI7SINPnWddpSijd+zabWbLMqmFk5z1lo6kaW9oPXx536MHWRbfqCbmNFy+n2TJ178bE2Y5NoQPZw== ----------
--------- [ Encrypt success ] 加密数据成功 ---------- --------- [ Decrypt ] 加密算法:AES/CTR/ISO10126Padding ----------
--------- [ Decrypt ] 算法:AES, 加密模式:CTR,补码: ISO10126Padding ----------
--------- [ Decrypt ] 秘钥:9CB9134F56294E57,向量 偏移量:2F53A1CBE07E467B ----------
--------- [ Decrypt ] 解密前数据:ngt4WKtqwsI7SINPnWddpSijd+zabWbLMqmFk5z1lo6kaW9oPXx536MHWRbfqCbmNFy+n2TJ178bE2Y5NoQPZw== ----------
--------- [ Decrypt ] 解密后数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Decrypt success ] 解密数据成功 ---------- 原字符串: 这是一个没有固定长度的测试的字符串
加密后字符串: ngt4WKtqwsI7SINPnWddpSijd+zabWbLMqmFk5z1lo6kaW9oPXx536MHWRbfqCbmNFy+n2TJ178bE2Y5NoQPZw==
解密后字符串: 这是一个没有固定长度的测试的字符串

AES/OFB/*,测试输出:

--------- [ Encrypt ] 加密算法:AES/OFB/NoPadding ----------
--------- [ Encrypt ] 算法:AES, 加密模式:OFB,补码: NoPadding ----------
--------- [ Encrypt ] 秘钥:CF6B28476B434496, 向量偏移量:894C3C61F7EC4808 ----------
--------- [ Encrypt ] 加密前数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Encrypt ] 加密后数据:dxWt2Fw9n6/D5pRaq4qx5SeqMB0WnKoyoi+ircoDaYNywjHBNqZ+AkFQbvHHu95ITw8sufbcsJGQX6lFDwPbVA== ----------
--------- [ Encrypt success ] 加密数据成功 ---------- --------- [ Decrypt ] 加密算法:AES/OFB/NoPadding ----------
--------- [ Decrypt ] 算法:AES, 加密模式:OFB,补码: NoPadding ----------
--------- [ Decrypt ] 秘钥:CF6B28476B434496,向量 偏移量:894C3C61F7EC4808 ----------
--------- [ Decrypt ] 解密前数据:dxWt2Fw9n6/D5pRaq4qx5SeqMB0WnKoyoi+ircoDaYNywjHBNqZ+AkFQbvHHu95ITw8sufbcsJGQX6lFDwPbVA== ----------
--------- [ Decrypt ] 解密后数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Decrypt success ] 解密数据成功 ---------- 原字符串: 这是一个没有固定长度的测试的字符串
加密后字符串: dxWt2Fw9n6/D5pRaq4qx5SeqMB0WnKoyoi+ircoDaYNywjHBNqZ+AkFQbvHHu95ITw8sufbcsJGQX6lFDwPbVA==
解密后字符串: 这是一个没有固定长度的测试的字符串 --------- [ Encrypt ] 加密算法:AES/OFB/PKCS5Padding ----------
--------- [ Encrypt ] 算法:AES, 加密模式:OFB,补码: PKCS5Padding ----------
--------- [ Encrypt ] 秘钥:B49117B4A4964EFF, 向量偏移量:E8CF95FF1D2A4A74 ----------
--------- [ Encrypt ] 加密前数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Encrypt ] 加密后数据:gQDGEqp2G8Mt5ayuFf8B+UyM2L7rwlHIiAWUgc/SkoMQHP/7e7fk/gsSxQY9ZAM3Ql6AE58LA0mWoM604VbUAA== ----------
--------- [ Encrypt success ] 加密数据成功 ---------- --------- [ Decrypt ] 加密算法:AES/OFB/PKCS5Padding ----------
--------- [ Decrypt ] 算法:AES, 加密模式:OFB,补码: PKCS5Padding ----------
--------- [ Decrypt ] 秘钥:B49117B4A4964EFF,向量 偏移量:E8CF95FF1D2A4A74 ----------
--------- [ Decrypt ] 解密前数据:gQDGEqp2G8Mt5ayuFf8B+UyM2L7rwlHIiAWUgc/SkoMQHP/7e7fk/gsSxQY9ZAM3Ql6AE58LA0mWoM604VbUAA== ----------
--------- [ Decrypt ] 解密后数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Decrypt success ] 解密数据成功 ---------- 原字符串: 这是一个没有固定长度的测试的字符串
加密后字符串: gQDGEqp2G8Mt5ayuFf8B+UyM2L7rwlHIiAWUgc/SkoMQHP/7e7fk/gsSxQY9ZAM3Ql6AE58LA0mWoM604VbUAA==
解密后字符串: 这是一个没有固定长度的测试的字符串 --------- [ Encrypt ] 加密算法:AES/OFB/PKCS7Padding ----------
--------- [ Encrypt ] 算法:AES, 加密模式:OFB,补码: PKCS7Padding ----------
--------- [ Encrypt ] 秘钥:7F2C5D507B5041BA, 向量偏移量:357F871961A84E3F ----------
--------- [ Encrypt ] 加密前数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Encrypt ] 加密后数据:shuo1qyEvWi7KxdDRSTniZcZKRdgaZnZvbgovlA0ctyOFV5jnPGWhaP0Vl53E39UKfUwrBeFYWB6xYf4fsY3zQ== ----------
--------- [ Encrypt success ] 加密数据成功 ---------- --------- [ Decrypt ] 加密算法:AES/OFB/PKCS7Padding ----------
--------- [ Decrypt ] 算法:AES, 加密模式:OFB,补码: PKCS7Padding ----------
--------- [ Decrypt ] 秘钥:7F2C5D507B5041BA,向量 偏移量:357F871961A84E3F ----------
--------- [ Decrypt ] 解密前数据:shuo1qyEvWi7KxdDRSTniZcZKRdgaZnZvbgovlA0ctyOFV5jnPGWhaP0Vl53E39UKfUwrBeFYWB6xYf4fsY3zQ== ----------
--------- [ Decrypt ] 解密后数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Decrypt success ] 解密数据成功 ---------- 原字符串: 这是一个没有固定长度的测试的字符串
加密后字符串: shuo1qyEvWi7KxdDRSTniZcZKRdgaZnZvbgovlA0ctyOFV5jnPGWhaP0Vl53E39UKfUwrBeFYWB6xYf4fsY3zQ==
解密后字符串: 这是一个没有固定长度的测试的字符串 --------- [ Encrypt ] 加密算法:AES/OFB/ISO10126Padding ----------
--------- [ Encrypt ] 算法:AES, 加密模式:OFB,补码: ISO10126Padding ----------
--------- [ Encrypt ] 秘钥:0746E45280884C87, 向量偏移量:2EBF60DEE1F14462 ----------
--------- [ Encrypt ] 加密前数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Encrypt ] 加密后数据:OpgpMES7fA6fIANe8EGEXirfEty/zo98IKG/PzZqqMeoRhQRkFKy4wbIQ+3V5EsW5YL8qdL1pfxKoRMIlIjCHQ== ----------
--------- [ Encrypt success ] 加密数据成功 ---------- --------- [ Decrypt ] 加密算法:AES/OFB/ISO10126Padding ----------
--------- [ Decrypt ] 算法:AES, 加密模式:OFB,补码: ISO10126Padding ----------
--------- [ Decrypt ] 秘钥:0746E45280884C87,向量 偏移量:2EBF60DEE1F14462 ----------
--------- [ Decrypt ] 解密前数据:OpgpMES7fA6fIANe8EGEXirfEty/zo98IKG/PzZqqMeoRhQRkFKy4wbIQ+3V5EsW5YL8qdL1pfxKoRMIlIjCHQ== ----------
--------- [ Decrypt ] 解密后数据:这是一个没有固定长度的测试的字符串 ----------
--------- [ Decrypt success ] 解密数据成功 ---------- 原字符串: 这是一个没有固定长度的测试的字符串
加密后字符串: OpgpMES7fA6fIANe8EGEXirfEty/zo98IKG/PzZqqMeoRhQRkFKy4wbIQ+3V5EsW5YL8qdL1pfxKoRMIlIjCHQ==
解密后字符串: 这是一个没有固定长度的测试的字符串

Java中的AES加解密工具类:AESUtils的更多相关文章

  1. Java中的RSA加解密工具类:RSAUtils

    本人手写已测试,大家可以参考使用 package com.mirana.frame.utils.encrypt; import com.mirana.frame.utils.log.LogUtils; ...

  2. Java中的AES加解密

    直接上代码,Base64使用的是Java8的方法,如没有,替换即可 KEY:即密码 IV:即偏移量,可自订,十六位 加密方式:AES/CBC/PKCS5Padding,128位加密 如果想用256位和 ...

  3. C#与java中的AES加解密互解算法

    一.C#版AES加解密算法 public class AESCode { public string Key { get; set; } public string Encrypt(string va ...

  4. RSA加解密工具类RSAUtils.java,实现公钥加密私钥解密和私钥解密公钥解密

    package com.geostar.gfstack.cas.util; import org.apache.commons.codec.binary.Base64; import javax.cr ...

  5. AES加密解密工具类封装(AESUtil)

    package club.codeapes.common.utils; import org.springframework.util.Base64Utils; import javax.crypto ...

  6. vue 核心加解密工具类 方法

    1 /* base64 加解密 2 */ 3 export let Base64 = require('js-base64').Base64 4 5 /* md5 加解密 6 */ 7 export ...

  7. java中redis的分布式锁工具类

    使用方式 try { if(PublicLock.getLock(lockKey)){ //这里写代码逻辑,执行完后需要释放锁 PublicLock.freeLock(lockKey); } } ca ...

  8. DES加解密工具类

    这两天在跟友商对接接口,在对外暴露接口的时候,因为友商不需要登录即可访问对于系统来说存在安全隐患,所以需要友商在调用接口的时候需要将数据加密,系统解密验证后才执行业务.所有的加密方式并不是万能的,只是 ...

  9. java中使用反射做一个工具类,来为指定类中的成员变量进行赋值操作,使用与多个类对象的成员变量的赋值。

    //------------------------------------------------我是代码的分割线 // 首选是一个工具类,在该工具类里面,定义了一个方法,public void s ...

随机推荐

  1. javascript总结45: HTML DOM media 属性

    定义和用法 media 属性设置或返回显示文档的设备. 对于样式信息而言,目标媒介非常重要.移动设备和桌面计算机的样式可能是不同的. 实例 <html> <head> < ...

  2. TCP协议三次握手连接四次握手断开和DOS攻击

    转载:http://blog.csdn.net/fw0124/article/details/7452695 TCP连接的状态图 TCP建立连接的三次握手过程,以及关闭连接的四次握手过程 贴一个tel ...

  3. 敏捷软件开发:原则、模式与实践——第11章 DIP:依赖倒置原则

    第11章 DIP:依赖倒置原则 DIP:依赖倒置原则: a.高层模块不应该依赖于低层模块.二者都应该依赖于抽象. b.抽象不应该依赖于细节.细节应该依赖于抽象. 11.1 层次化 下图展示了一个简单的 ...

  4. 编写高质量代码改善C#程序的157个建议——建议146:只对外公布必要的操作

    建议146:只对外公布必要的操作 那些没有必要公开的方法和属性要声明成private.如果需要公开的方法和属性超过9个,在VS默认的设置下,就需要滚屏才能显示在Intellisense中,如图: Sa ...

  5. Python Selenium 之常用API

    Selenium WebDriver下提供许多用来与浏览器.元素.鼠标.键盘.弹框.下拉菜单和列表的交互和设置方法.这些是计算机模拟人工进行自动化测试所必要依赖的方法.下面将用列表的方式总结出常用的A ...

  6. Web环境中Spring的启动过程

    1.spring不但可以在JavaSE环境中应用,在Web环境中也可以广泛应用,Spring在web环境中应用时,需要在应用的web.xml文件中添加如下的配置: …… <context-par ...

  7. Altera SOPC FrameBuffer系统设计教程

    Altera SOPC FrameBuffer系统设计教程 小梅哥编写,未经授权,严禁转载或用于任何商业用途 在嵌入式系统中,LCD屏作为最友好的人机交互方式,被大量的应用到了各个系统中.在基于ARM ...

  8. 7、Semantic-UI之图标与按钮组

    7.1 图标按钮   Semantic-UI中可以定义一组图标样式,并且可以在按钮中使用图标. 示例:定义一个图标按钮 <button class="ui black button&q ...

  9. Windows store app[Part 3]:认识WinRT的异步机制

    WinRT异步机制的诞生背景 当编写一个触控应用程序时,执行一个耗时函数,并通知UI更新,我们希望所有的交互过程都可以做出快速的反应.流畅的操作感变的十分重要. 在连接外部程序接口获取数据,操作本地数 ...

  10. 在Linux安装ASP.Net Core的运行时(Runtime)

    在部署的时候,如果您不想在您的Linux服务器上安装.Net Core SDK,您可以只安装Runtime,接下来我们看看该如何安装运行时Runtime. 下载运行时文件 下载页面:https://w ...