`
明子健
  • 浏览: 577249 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

AESUtil Java AES 加密解密工具类

    博客分类:
  • Java
阅读更多
package com.singlee.util;

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

import org.apache.commons.net.util.Base64;

/**
 * AES工具类
 * 
 * <pre>
 *   因为某些国家的进口管制限制,Java发布的运行环境包中的加解密有一定的限制。比如默认不允许256位密钥的AES加解密,解决方法就是修改策略文件。
 *   替换的文件:%JDK_HOME%\jre\lib\security\local_policy.jar
 * 参考: http://czj4451.iteye.com/blog/1986483
 */
public class AESUtil {
	// 密钥
	public static String key = "AD42F6697B035B7580E4FEF93BE20BAD";
	private static String charset = "utf-8";
	// 偏移量
	private static int offset = 16;
	private static String transformation = "AES/CBC/PKCS5Padding";
	private static String algorithm = "AES";

	/**
	 * 加密
	 * 
	 * @param content
	 * @return
	 */
	public static String encrypt(String content) {
		return encrypt(content, key);
	}

	/**
	 * 解密
	 * 
	 * @param content
	 * @return
	 */
	public static String decrypt(String content) {
		return decrypt(content, key);
	}

	/**
	 * 加密
	 * 
	 * @param content
	 *            需要加密的内容
	 * @param key
	 *            加密密码
	 * @return
	 */
	public static String encrypt(String content, String key) {
		try {
			SecretKeySpec skey = new SecretKeySpec(key.getBytes(), algorithm);
			IvParameterSpec iv = new IvParameterSpec(key.getBytes(), 0, offset);
			Cipher cipher = Cipher.getInstance(transformation);
			byte[] byteContent = content.getBytes(charset);
			cipher.init(Cipher.ENCRYPT_MODE, skey, iv);// 初始化
			byte[] result = cipher.doFinal(byteContent);
			return new Base64().encodeToString(result); // 加密
		} catch (Exception e) {
			LogUtil.exception(e);
		}
		return null;
	}

	/**
	 * AES(256)解密
	 * 
	 * @param content
	 *            待解密内容
	 * @param key
	 *            解密密钥
	 * @return 解密之后
	 * @throws Exception
	 */
	public static String decrypt(String content, String key) {
		try {

			SecretKeySpec skey = new SecretKeySpec(key.getBytes(), algorithm);
			IvParameterSpec iv = new IvParameterSpec(key.getBytes(), 0, offset);
			Cipher cipher = Cipher.getInstance(transformation);
			cipher.init(Cipher.DECRYPT_MODE, skey, iv);// 初始化
			byte[] result = cipher.doFinal(new Base64().decode(content));
			return new String(result); // 解密
		} catch (Exception e) {
			LogUtil.exception(e);
		}
		return null;
	}

	public static void main(String[] args) throws Exception {
		String s = "hello world";
		// 加密
		System.out.println("加密前:" + s);
		String encryptResultStr = encrypt(s);
		System.out.println("加密后:" + encryptResultStr);
		// 解密
		System.out.println("解密后:" + decrypt(encryptResultStr));
	}
}

 

注:加解密只需替换 %JDK_HOME%\jre\lib\security\local_policy.jar 即可(注意备份)

附件:java1.7的策略文件 

其他java版本请参考: http://czj4451.iteye.com/blog/1986483

分享到:
评论

相关推荐

    AESUtil AES的加密和解密java工具类

    AESUtil AES的加密和解密java工具类 aes解密 aes加密 KeyGenerator kgen = KeyGenerator.getInstance("AES"); kgen.init(128); Cipher cipher = Cipher.getInstance(ALGORITHMSTR); //"算法/模式/补码方式" ...

    JAVA实现AES加密解密工具类

    总之,AES加密解密工具类在Java中实现涉及对Cipher类的熟练使用,理解加密模式和填充策略,以及正确管理和生成密钥和初始化向量。这个工具类使得开发者能够方便地在项目中集成加密功能,保障数据的安全。

    java中aes加密解密工具类

    java中aes加密解密工具类

    AES加密解密工具类

    JAVA AES加密和解密的工具类。 这个AES加密可用于Android,和java端俩种情况。

    C# AES加密解密小工具

    本项目“C# AES加密解密小工具”提供了一个简单的AES ECB模式加密和解密实现,适用于对文本文件进行安全处理。 首先,AES是一种块密码,它将明文分成128位的块进行操作。ECB(Electronic Codebook)模式是最基础的...

    Qt实现AES加密解密

    这个程序应当包含了上述知识点的具体应用,你可以通过阅读源代码、编译和运行来进一步理解和学习AES加密解密的实现细节。这个实战例程可以帮助开发者更好地掌握Qt环境下的加密解密操作,提高数据安全保护能力。

    AES加密工具类

    AES加密解密工具类,解决windows下和linux加密解密不同问题。

    c AES, c++ AES, java AES, 互通, 加密解密

    Java中,虽然提供了BigInteger类来处理大整数,但AES加密解密通常使用Java的javax.crypto包,其中的Cipher类可以直接处理。然而,为了实现不依赖外部库的目标,我们需要手动实现AES的全部算法,这意味着需要将Cipher...

    java的AES加密解密

    本篇将详细介绍Java实现AES加密解密的原理与实践。 AES是一种块密码,它以128位(16字节)的数据块作为处理单位,通过多次替换、置换等操作来实现加密。AES有三个关键参数:密钥长度(128、192或256位)、轮数(10...

    java使用Hex编码解码实现Aes加密解密功能示例

    在本文示例中,我们关注的是如何利用Java的Hex编码和解码来处理AES加密和解密的过程。 首先,让我们了解什么是Hex编码。Hex编码是一种将二进制数据转换为可打印字符的表示方式,每个字节被转换为两个十六进制数字...

    c/c++ 与java互通 AES加密解密,算法ECB

    压缩包里有两个工程,一个vc6.0一个myeclipse,本帖是修复贴,原帖地址c/c++ 与java互通 AES加密解密,算法ECB/PKCS5PADDING http://download.csdn.net/download/wangsonghiweed/4328267 -来自CSDN,有童鞋反映有...

    java前后端通讯AES加密及解密样例

    通过这个案例,我们可以看到在Spring Boot项目中实现AES加密解密的基本步骤。然而,实际项目中还应考虑其他安全措施,例如使用HTTPS协议、密钥的动态生成和安全存储、以及对称加密与非对称加密的结合使用等,以增强...

    好用的AES加密解密工具(源码)

    6. Aes.h、AES加密解密工具Dlg.h、AES加密解密工具.h:这些是头文件,定义了类和函数的接口,方便在其他文件中进行调用。 7. resource.h:资源头文件,包含了程序中使用的各种资源定义,如菜单、对话框、图标等。 ...

    JAVA AES加密解密

    * 编码工具类 * 1.将byte[]转为各种进制的字符串 * 2.base 64 encode * 3.base 64 decode * 4.获取byte[]的md5值 * 5.获取字符串md5值 * 6.结合base64实现md5加密 * 7.AES加密 * 8.AES加密为base 64...

    java AES 加密解密源码,集成了AWT 界面,源码直接打包成jar,可以运行

    本项目提供了一个集成了AWT界面的Java AES加密解密工具,方便开发者直接使用或集成到自己的项目中。 首先,我们要理解AES加密的基本原理。AES是一种块密码,它将明文分为128位的数据块进行处理,支持128、192、256...

    AES加密解密的前台js文件和后台java工具类

    这个压缩包文件包含了用于前台JS和后台Java进行AES加密解密的工具类,使得在客户端与服务器端的数据传输过程中,能够确保信息的安全性。 在前端JS中,AES加密通常用于对敏感数据如用户密码、身份信息等进行处理,...

    android AES加密工具类

    android 可以使用的 AES加密工具类

    Swift 实现的 RSA, AES 加密解密工具类.zip

    Swift 实现的 RSA, AES 加密解密工具类.zip,rsa公钥/私钥生成,rsa,aes加密/解密,rsa sign/verify in swift with commoncrypto in ios and os x

Global site tag (gtag.js) - Google Analytics