采用AES加密,使用同一个Key可以解密。
package com.xiva.common.util;
import java.io.IOException;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/**
*
* 加密工具类
*
* @author x0000014553
* @version [版本号, 2013-1-8]
* @see [相关类/方法]
* @since [产品/模块版本]
*/
public class EncryptUtil
{
private static String strKey = "QmxvZ1N5c3RlbQ==";
public static String encryptAES(String str)
{
byte[] encryptBytes = null;
String encryptStr = null;
try
{
Cipher cipher = Cipher.getInstance("AES");
SecretKey sk = getKey();
// 加密
cipher.init(Cipher.ENCRYPT_MODE, sk);
encryptBytes = cipher.doFinal(str.getBytes());
if (encryptBytes != null)
{
encryptStr = encryptBASE64(encryptBytes);
}
}
catch (Exception e)
{
e.printStackTrace();
}
return encryptStr;
}
public static String decryptAES(String str)
{
byte[] decryptBytes = null;
String decryptStr = null;
try
{
Cipher cipher = Cipher.getInstance("AES");
SecretKey sk = getKey();
// 解密
cipher.init(Cipher.DECRYPT_MODE, sk);
byte[] scrBytes = decryptBASE64(str);
decryptBytes = cipher.doFinal(scrBytes);
}
catch (Exception e)
{
e.printStackTrace();
}
if (decryptBytes != null)
{
decryptStr = new String(decryptBytes);
}
return decryptStr;
}
public static SecretKey getKey()
{
SecretKey key = null;
try
{
KeyGenerator generator = KeyGenerator.getInstance("AES");
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
secureRandom.setSeed(strKey.getBytes());
generator.init(128 , secureRandom);
key = generator.generateKey();
}
catch(Exception e)
{
e.printStackTrace();
}
return key;
}
/**
* BASE64加密
*
* @param key
* @return
* @throws Exception
*/
public static String encryptBASE64(byte[] key)
{
return (new BASE64Encoder()).encodeBuffer(key);
}
/**
* BASE64解密
*
* @param key
* @return
* @throws Exception
*/
public static byte[] decryptBASE64(String key)
{
try
{
return (new BASE64Decoder()).decodeBuffer(key);
}
catch (IOException e)
{
e.printStackTrace();
return null;
}
}
public static void main(String[] args)
{
String password = "Aa123_";
String encryptPwd = encryptAES(password);
System.out.println(encryptPwd);
String decryptPwd = decryptAES(encryptPwd);
System.out.println(decryptPwd);
}
}
分享到:
相关推荐
JAVA AES对称加密工具类,可实用;包含加密字符串和文件流
综合网上的AES加密,把其做成一个工具类,方便加密解密的实现
AES加密和解密的工具类,DLL可以直接引用到代码。支持WIN 7及以上版本。
AES对称加密算法的Python代码实现,含基础UI界面,课程设计 AES加密算法涉及4种操作,分别是字节替代、行移位、列混淆和轮密钥加,解密算法的每一步分别对应加密算法的逆操作,且所有操作的顺序相反。加解密中每轮的...
适用于java开发者使用,用于对称加密的数据。进行加密。
Base64+ AES加密工具类 对称加密,十分的方便使用。可用于登录注册各种对称加密
AES加密解密验证工具(支持各种加密模式)
qt5AES加密,ES加密/解密算法是一种可逆的对称加密算法,这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推
AES(Advanced Encryption Standard)是一种对称加密算法,它使用相同的密钥对数据进行加密和解密。 AES 的密钥长度有 128 位、192 位和 256 位三种可选,密钥长度越长,加密强度越高。 AES 的特点如下: 加密强度...
stm32加解密工具类,直接可用,采用AES 对称加密解密 AES_Decrypt(expressText,cipherText , aesKey);
基于Crypto++库的AES对称加密实现对数据的加解密
常用对称加密(AES/DES/3DES)及非对称加密(RSA)工具类
高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。... CryptoJS工具类包,aes加密只使用了其中的crypto-js.js文件
AES,又称Rijndael加密算法,在2000年被NIST选中以用来替换过时的数据加密标准(DES)。AES 是一种分组密码,这意味着加密发生在固定长度的比特组上。在我们的例子中,算法定义块长度为128位。AES 支持128,192和256...
关于AES对称性加密解密的工具类 JAVA语言 即拿即用 JDK版本1.8+
1、AES加密工具类 java不支持PKCS7Padding,只支持PKCS5Padding。我们知道加密算法由算法+模式+填充组成,下一篇介绍iOS和Android通用的AES加密,本篇文章使用PKCS5Padding加密方式。 package com.example.aesdemo;...
AES算法采用对称加密算法进行加密和解密,使用相同的密钥进行加密和解密。对称加密算法是一种加密和解密使用相同密钥的加密算法。AES算法使用相同的密钥进行加密和解密,因此它是一种对称加密算法。
AES加密示例,包括生成秘钥,加密,解密过程. AES是一种常见的对称加密,加密工具已经被集成进jdk