`
01jiangwei01
  • 浏览: 542710 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

AESUtils

    博客分类:
  • java
 
阅读更多
import java.io.UnsupportedEncodingException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;

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

public class AESUtils {

	private static KeyGenerator keyGen;
	private static Cipher cipher;
	private static final String algorithmStr = "AES/ECB/PKCS5Padding";
	private static String keyStr = "aaaaaa";

	static {
		try {
			// 初始化keyGen
			keyGen = KeyGenerator.getInstance("AES");
			keyGen.init(128);
			// 初始化cipher
			cipher = Cipher.getInstance(algorithmStr);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) throws NoSuchAlgorithmException {
		String string = "{\"name\": \"test\"}";
		String string2 = "www";
		String encryptString = encrypt(string);
		System.out.println("原始数据: " + string + " 加密后: " + encryptString + " 解密后: " + decrypt(encryptString));
		String encryptString2 = encrypt(string2);
		System.out.println("原始数据: " + string2 + " 加密后: " + encryptString2 + " 解密后: " + decrypt(encryptString2));
	}

	/**
	 * 加密方法.
	 */
	public static String encrypt(String content) {
		byte[] encryptedBytes = null;
		Key key = new SecretKeySpec(keyStr.getBytes(), "AES");
		try {
			cipher.init(Cipher.ENCRYPT_MODE, key);
			encryptedBytes = cipher.doFinal(stringToBytes(content));
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return bytesToString(Base64.getEncoder().encode(encryptedBytes));
	}

	/**
	 * 解密方法.
	 */
	public static String decrypt(String content) {
		byte[] originBytes = null;

		Key key = new SecretKeySpec(keyStr.getBytes(), "AES");
		try {
			cipher.init(Cipher.DECRYPT_MODE, key);
			originBytes = cipher.doFinal(Base64.getDecoder().decode(content));
		} catch (Exception e) {
			e.printStackTrace();
		}
		return bytesToString(originBytes);
	}

	/**
	 * 转字节数据.
	 */
	private static byte[] stringToBytes(String str) {
		return str.getBytes();
	}

	/**
	 * 字节数组转为字符串.
	 */
	private static String bytesToString(byte[] bytes) {
		String string = null;
		try {
			string = new String(bytes, "utf-8");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return string;
	}
}
分享到:
评论

相关推荐

    AESUtils加密解密

    **AESUtils加密解密** 在信息安全领域,数据加密是保护数据隐私的重要手段。AES(Advanced Encryption Standard)即高级加密标准,是一种广泛使用的对称加密算法,因其高效且安全性较高而被广泛应用。本篇文章将...

    AESUtils实现了基于AES的ECB模式,选用了zeropadding填充,数据位为128 加上密码去加解密数据(优化并实测通过)

    AESUtils实现了基于AES的ECB模式,选用了zeropadding填充,数据位为128 加上密码去加解密数据,优化并实测通过

    AESUtils-Android

    "AES": 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。...

    AESUtils.java

    AES加密工具类

    AES代码_java版本.rar_AES_BackAES_aes java_aesutils java_lifebza

    它在Java中也有很好的支持,使得开发者可以方便地在应用程序中集成数据加密功能。在给定的"AES代码_java版本.rar"压缩包中,包含了与AES加密相关的Java实现,包括可能的BackAES(可能是一个自定义实现或后向兼容的...

    AESUtils.cs

    AES/CBC/PKCS5Padding 加密输出

    AES解密需要的jar包

    AES(Advanced Encryption Standard)是一种广泛使用的对称加密算法,用于保护数据的安全性。在Java环境中,如果需要进行AES加密和解密操作,通常会依赖特定的库或jar包。在这个压缩包中,提供的两个关键jar文件——...

    Android AES加密解密

    简介:采用密钥为16位长度的加密字符,算法为AES,CBC模式,PKCS5Padding填充模式。在Demo中使用了两个转换方法,二进制转为16进制,...tvDecrypt.setText(AESUtils.decrypt(key, tvEncryption.getText().toString()));

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

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

    支持AES加密.zip

    综合来看,这个压缩包提供了一个适用于Java环境的AES加密工具类AesUtils.java,它可能包含了上述的加密模式和填充方法,并且可能考虑了非对称加密的私钥安全处理。这样的工具类对于开发人员来说非常实用,可以方便地...

    AES对称加密工具类Utils

    AES加密和解密的工具类,DLL可以直接引用到代码。支持WIN 7及以上版本。

    利用jdk自带算法实现的AES加解密

    在Java开发中,数据安全是至关重要的,而AES(Advanced Encryption Standard)加解密是一种广泛使用的对称加密算法,能够确保敏感信息的安全性。本文将详细介绍如何利用JDK自带的算法实现AES加解密,并结合Base64编...

    AesCbc5Utils.java

    提供了一些加密解密的处理方法。

    aes、ras,前端js加密,后端java解密

    `AesUtils.java`可能包含了处理AES加密的工具类,包括创建密钥、加密和解密方法。`RSACoder.java`则是处理RSA加密/解密的类,可能包含了生成公钥和私钥、解密前端传来的RSA加密数据等功能。 **工作流程** 1. **前端...

    Android代码-CommonLibary

    AESUtils、Base64、ByteUtil、DESUtils、HexUtil、MD5Utils、RSAEncrypt、SharePreUtils。用于数据的安全性及数据持久化 > io > -- BitmapUtils、FileUtils、IOUtils、PhotoUtils、StorageUtils。用于图片、文件、...

    Java AES对称加密工具类Utils

    综合网上的AES加密,把其做成一个工具类,方便加密解密的实现

    JAVA工具类

    AesUtils - 实现AES加密解密 Base64Utils - 实现Base64加密解密 Md5Utils - 获取字符串或文件的md5 excel ReadExcel2003 - 以model方式读2003版Excel(大数据) ReadExcel2007 - 以sax方式读2007版Excel(大数据)...

    加密解密思路

    `AESUtils.java`文件可能包含了AES加解密的实用方法。 3. **OpenAccountControllerTest.java**: 这个名字暗示着一个Spring MVC或Spring Boot应用的控制器测试类,用于测试账户相关的操作。在处理敏感信息如用户...

    安卓和js加解密

    2. AES加密:在Android中,AESUtils.java可能是一个用于实现AES加解密的工具类。AES是一种块密码,对数据进行128位的块操作,广泛用于文件和通信的加密。示例代码可能会包括生成随机秘钥、初始化向量(IV),以及...

    java .net AES加密不兼容问题:

    在给定的文件中,`AesUtils.java`可能是一个Java实现的AES加密工具类,而`net.txt`可能是.NET平台上AES加密的相关说明或代码片段。分析这两个文件可以帮助我们更好地理解具体的实现差异,并针对性地解决不兼容问题。...

Global site tag (gtag.js) - Google Analytics