All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.gitee.easyopen.util.AESUtil Maven / Gradle / Ivy

Go to download

easyopen mini版,保留基本签名校验,文档功能。https://gitee.com/durcframework/easyopen

There is a newer version: 1.0.4
Show newest version
package com.gitee.easyopen.util;

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

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

/**
 * AES-128 ECB加密.
* *
 * 字符集:UTF-8
 * 算法模式:ECB
 * 数据块:128位
 * 补码方式:PKCS5Padding
 * 加密结果编码方式:Base64
 * 
* * @author tanghc * */ public class AESUtil { private static final String UTF8 = "UTF-8"; private static final String ALGORITHM = "AES"; /** 默认的加密算法 */ private static final String ALGORITHM_CIPHER = "AES/ECB/PKCS5Padding"; private static final int LIMIT_LEN = 16; /** * 生成一个SecretKey * @param password 长度必须小于等于16 * @return 返回SecretKey */ public static SecretKey getSecretKey(String password) { byte[] passwordData = password.getBytes(); if(passwordData.length > LIMIT_LEN) { throw new IllegalArgumentException("password 长度必须小于等于16"); } // 创建一个空的16位字节数组(默认值为0),16byte(128bit) byte[] keyData = new byte[16]; System.arraycopy(passwordData, 0, keyData, 0, passwordData.length); return new SecretKeySpec(keyData, ALGORITHM); } /** * 加密 * @param data 待加密数据 * @param password 密码 * @return 返回加密成功后数据 * @throws Exception */ public static byte[] encrypt(byte[] data, String password) throws Exception { SecretKey secretKey = getSecretKey(password); // Ciphr完成加密或解密工作类 Cipher cipher = Cipher.getInstance(ALGORITHM_CIPHER); // 对Cipher初始化,解密模式 cipher.init(Cipher.ENCRYPT_MODE, secretKey); // 加密data return cipher.doFinal(data); } /** * 解密 * @param data 待解密数据 * @param password 密码 * @return 返回解密后的数据 * @throws Exception */ public static byte[] decrypt(byte[] data, String password) throws Exception { SecretKey secretKey = getSecretKey(password); // Cipher完成加密或解密工作类 Cipher cipher = Cipher.getInstance(ALGORITHM_CIPHER); // 对Cipher初始化,解密模式 cipher.init(Cipher.DECRYPT_MODE, secretKey); // 解密data return cipher.doFinal(data); } /** * 文本加密 * @param content 明文 * @param password 密码 * @return 返回base64内容 * @throws Exception */ public static String encryptToBase64String(String content, String password) throws Exception { byte[] data = content.getBytes(UTF8); byte[] result = encrypt(data, password); return Base64.encodeBase64String(result); } /** * 文本解密 * @param base64String 待解密文本 * @param password 密码 * @return 返回明文 * @throws Exception */ public static String decryptFromBase64String(String base64String, String password) throws Exception { byte[] data = Base64.decodeBase64(base64String); byte[] contentData = decrypt(data, password); return new String(contentData, UTF8); } /** * 文本加密 * @param content 明文 * @param password 密码 * @return 返回16进制内容 * @throws Exception */ public static String encryptToHex(String content, String password) throws Exception { byte[] data = content.getBytes(UTF8); byte[] result = encrypt(data, password); return Hex.encodeHexString(result); } /** * 文本解密 * @param hex 待解密文本 * @param password 密码 * @return 返回明文 * @throws Exception */ public static String decryptFromHex(String hex, String password) throws Exception { byte[] data = Hex.decodeHex(hex); byte[] contentData = decrypt(data, password); return new String(contentData,UTF8); } /*public static void main(String[] args) throws Exception { String content = "我爱你"; String password = "1234567890123456"; System.out.println("password:" + password); String ret2 = encryptToBase64String(content, password); System.out.println("密文:" + ret2); String content3 = decryptFromBase64String(ret2, password); System.out.println(content.equals(content3)); }*/ }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy