AES加密解密:Java代码完整示例
目录
一、AES算法简述
二、具体Java代码AES算法加解密实现Demo:
三、pom依赖引入:
一、AES算法简述
密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。AES 或高级加密标准是一种对称密钥加密算法,最初由两位比利时密码学家 Joan Daemen 和 Vincent Rijmen 开发。这个标准用来替代原先的DES(Data Encryption Standard),已经被多方分析且广为全世界所使用。
AES具体步骤主要分为密钥扩展、字节代换、行移位、列混合、和轮密钥加。
大致流程如下:
二、具体Java代码AES算法加解密实现Demo:
package org.example;
import org.apache.commons.codec.binary.Base64;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
public class AESUtils {
public static void main(String[] args) {
String context = "待加密内容";
System.out.println(encryptDes(context));
String contextSectrect = "====密文====";
System.out.println(decryptDES(contextSectrect));
}
/**
*加密/解密-工作模式-填充模式
*/
private static final String transformation = "DES/ECB/PKCS5Padding";
/**
* 密钥算法
*/
private static final String algorithm = "DES";
/**
* 偏移变量
*/
private static final String key = "1234";
/**
* 使用DES加密数据
* @param input: 待加密内容
*/
public static String encryptDes(String input) {
try {
//取加密对象
Cipher cipher = Cipher.getInstance(transformation);
//加密规则
SecretKeySpec sec = new SecretKeySpec(key.getBytes(), algorithm);
//初始化加密模式
cipher.init(Cipher.ENCRYPT_MODE, sec);
//加密
byte[] bytes = cipher.doFinal(input.getBytes(StandardCharsets.UTF_8));
//输出加密后数据
return Base64.encodeBase64URLSafeString(bytes);
} catch (Exception e) {
System.out.println("加密失败");
return null;
}
}
/**
* DES解密
* @param input: 密文
* @return: 原文
*/
public static String decryptDES(String input) {
try {
//取Cipher对象
Cipher cipher = Cipher.getInstance(transformation);
//密钥规则
SecretKeySpec sec = new SecretKeySpec(key.getBytes(), algorithm);
cipher.init(Cipher.DECRYPT_MODE, sec);
//解密
byte[] bytes = cipher.doFinal(Base64.decodeBase64(input));
//明文,直接返回
return new String(bytes, StandardCharsets.UTF_8);
} catch (Exception e) {
System.out.println("解密失败");
return null;
}
}
}
三、pom依赖引入:
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.10</version>
</dependency>
还没有评论,来说两句吧...