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);
相关文章
|
2月前
|
算法 安全 Java
Java 实现 RSA 非对称加密算法-加解密和签名验签
Java 实现 RSA 非对称加密算法-加解密和签名验签
|
3月前
|
Java 数据安全/隐私保护
Java 中使用 OpenSSL 生成公钥私钥进行数据加解密
Java 中使用 OpenSSL 生成公钥私钥进行数据加解密
64 0
|
2月前
|
存储 算法 安全
java des加解密啊
【2月更文挑战第8天】
|
4月前
|
算法 搜索推荐 安全
AES - 对称加密算法简要介绍与JAVA实现
AES - 对称加密算法简要介绍与JAVA实现
62 0
|
9月前
|
存储 算法 Java
【算法】Java实现AES算法
AES(Advanced Encryption Standard)是一种对称密钥加密算法,它是目前最常用和广泛接受的加密算法之一。AES在2001年由美国国家标准技术研究所(NIST)选定为替代DES的标准加密算法。
195 0
|
Java Shell Maven
JAVA实现PGP/GPG加解密加验签
JAVA实现PGP/GPG加解密加验签
1950 0
|
10月前
|
算法 Java
java的DES和3DES加解密算法
java的DES和3DES加解密算法
|
11月前
|
算法 Java 数据安全/隐私保护
最新版-Python和Java实现Aes相互加解密
最新版-Python和Java实现Aes相互加解密
195 0
|
编解码 前端开发 算法
前端CryptoJS和Java后端数据互相加解密(AES)
最近刚好在做一个简单的保险代理人运营平台,主要是为了方便个人展业,由于有些客户数据比较敏感,所以在用户登录时准备对登录密码进行一波加密后再传输。
前端CryptoJS和Java后端数据互相加解密(AES)
|
存储 移动开发 前端开发
前后端RSA互相加解密、加签验签、密钥对生成(Java)
最近有一些安全性要求比较高的场景,我们提供API给第三方商户用于收单,其中有几个功能是绑卡、ATM/POS密码变更。
前后端RSA互相加解密、加签验签、密钥对生成(Java)