AES加密解密:Java代码完整示例

文章介绍了AES加密标准,它是高级加密标准,用于替代DES。提供了Java代码实现AES的加解密过程,包括密钥扩展、字节代换等步骤,并给出了一个使用ApacheCommonsCodec库进行Base64编码的DESDemo。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Clara Wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值