Java-AES加解密

简介: 密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。高级加密标准算法从很多方面解决了令人担忧的问题。实际上,攻击数据加密标准的那些手段对于高级加密标准算法本身并没有效果。如果采用真正的128位加密技术甚至256位加密技术,蛮力攻击要取得成功需要耗费相当长的时间。安全研究人员还没有那么多的时间对这种加密方法进行破解试验。我们可能会随时发现一种全新的攻击手段会攻破这种高级加密标准。至少在理论上存在这种可能性。

代码实现

package com.donate.common.util;

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

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

/**
 * AES加解密工具。
 * @author yanghaitao
 *
 */
public class AesUtils {
    private static final String KEY_ALGORITHM = "AES";
    private static final String CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding";
    private static final String BASE64STRING = "12345678123456783";
    private static final byte[] KEY = Base64.encodeBase64(BASE64STRING.getBytes());
    
    /**
     * encrypt : 加密数据
     */
    public static String encrypt(String context) throws Exception {
        return Base64.encodeBase64String(encrypt(context.getBytes(), KEY));
    }
    
    /**
     * decrypt : 解密数据
     */
    public static String decrypt(String context) throws Exception {
        return new String(decrypt(Base64.decodeBase64(context), KEY));
    }
    
    /**
     * encrypt : 加密数据
     */
    private static byte[] encrypt(byte[] data, byte[] key) throws Exception {
        // 还原密钥
        SecretKey k = new SecretKeySpec(key, KEY_ALGORITHM);
        Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
        // 初始化,设置为加密模式
        cipher.init(Cipher.ENCRYPT_MODE, k);
        // 执行操作
        return cipher.doFinal(data);
    }
    
    /**
     * decrypt : 解密数据
     */
    private static byte[] decrypt(byte[] data, byte[] key) throws Exception {
        // 欢迎密钥
        SecretKey k = new SecretKeySpec(key, KEY_ALGORITHM);
        Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
        // 初始化,设置为解密模式
        cipher.init(Cipher.DECRYPT_MODE, k);
        // 执行操作
        return cipher.doFinal(data);
    }
}

代码示例

String context = "12345678!qaz@WSX";
String data1 = AesUtils.encrypt(context);
System.err.println(data1);

String data2 = AesUtils.decrypt(data1);
System.err.println(data2);
相关文章
|
6月前
|
算法 安全 Java
Java 实现 RSA 非对称加密算法-加解密和签名验签
Java 实现 RSA 非对称加密算法-加解密和签名验签
256 0
|
6月前
|
Java 数据安全/隐私保护
Java 中使用 OpenSSL 生成公钥私钥进行数据加解密
Java 中使用 OpenSSL 生成公钥私钥进行数据加解密
121 0
|
6月前
|
算法 Java
Java使用Cipher.getInstance(“AES/ECB/PKCS5Padding“);加解密算法工具类实现
Java使用Cipher.getInstance(“AES/ECB/PKCS5Padding“);加解密算法工具类实现
573 0
|
5月前
|
Java PHP 数据安全/隐私保护
php和Java配合 aes
php和Java配合 aes加密
43 1
|
5月前
|
Java 数据安全/隐私保护
AES加密工具类(java)
AES加密工具类(java)
|
6月前
|
存储 算法 安全
java des加解密啊
【2月更文挑战第8天】
|
存储 算法 Java
【算法】Java实现AES算法
AES(Advanced Encryption Standard)是一种对称密钥加密算法,它是目前最常用和广泛接受的加密算法之一。AES在2001年由美国国家标准技术研究所(NIST)选定为替代DES的标准加密算法。
298 0
|
6月前
|
算法 搜索推荐 安全
AES - 对称加密算法简要介绍与JAVA实现
AES - 对称加密算法简要介绍与JAVA实现
132 0
|
存储 移动开发 前端开发
前后端RSA互相加解密、加签验签、密钥对生成(Java)
最近有一些安全性要求比较高的场景,我们提供API给第三方商户用于收单,其中有几个功能是绑卡、ATM/POS密码变更。
前后端RSA互相加解密、加签验签、密钥对生成(Java)
|
编解码 前端开发 算法
前端CryptoJS和Java后端数据互相加解密(AES)
最近刚好在做一个简单的保险代理人运营平台,主要是为了方便个人展业,由于有些客户数据比较敏感,所以在用户登录时准备对登录密码进行一波加密后再传输。
前端CryptoJS和Java后端数据互相加解密(AES)