前后端(JAVA)实现AES对称加解密方式_前端后端对称加解密

1.5 RC

RC加密包括RC2,RC4,RC5,RC2 是由著名密码学家 Ron Rivest 设计的一种传统对称分组加密算法,它可作为 DES 算法的建议替代算法。它的输入和输出都是64bit。密钥的长度是从1字节到128字节可变,但目前的实现是8字节(1998年)。

参考:
加解密篇 - 对称加密算法 (DES、3DES、AES、RC)

2 前后端实现AES对称加解密方式

  1. AES为对称加密算法,顾名思义,如果是前后端加解密场景,那前端需要保存一份秘钥,后端也需要保存一份秘钥,这两个秘钥是相同的,才可以实现加解密。
  2. AES的秘钥默认长度为16位,初始向量 IV也是16位,这两个默认长度一定要遵守,否则会有很多不可未知的错误。如果需要增加秘钥的长度增加复杂性,则推荐使用RC加密算法,因为该算法的秘钥长度可变。
  3. 待解密长度需要为16的倍数,否则会报以下错误,常用的解决办法为加密后使用Base64包装密文,则会自动补齐为16的倍数,解密时先使用Base64解密,则密文一定是16的整数倍。
Input length must be multiple of 16 when decrypting with padded cipher

3 后端AES对称加解密(ECB和CBC模式)工具类

import org.apache.commons.lang3.StringUtils;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.Base64;

/\*\*
 \* @author 
 \* @description AES加解密(ECB和CBC模式)
 \* @date 2023/12/8 15:08
 \*/
public class AESEncryptUtil {

    /\*\*
 \* 加密模式
 \* ECB: AES/ECB/PKCS5Padding
 \* CBC: AES/CBC/NoPadding
 \*/
    private static final String[] TRANSFORM\_ALGORITHM = new String[]{"AES/ECB/PKCS5Padding", "AES/CBC/NoPadding"};
    /\*\*
 \* 初始向量样式 IV
 \*/
    private static String iv =  "HBJNRU56MDk4NzK6";
    private static final String ALGORITHM = "AES";
    private static final String CHARSET\_NAME = "UTF-8";
    /\*\*
 \* AES加解key样式
 \*/
    public static String ENCRYPT\_KEY = "7CC408B24462ABD1";

    /\*\*
 \* AES的ECB模式加解
 \* @param data 待加密参数
 \* @param key 加密key
 \* @return
 \*/
    public static String encryptECB(String data, String key) {
        if (StringUtils.isEmpty(key)) {
            throw new IllegalArgumentException("加密失败,加密key为空");
        }
        SecretKeySpec aesKey = new SecretKeySpec(key.getBytes(Charset.forName(CHARSET\_NAME)), ALGORITHM);
        try {
            Cipher cipher = Cipher.getInstance(TRANSFORM\_ALGORITHM[0]);
            cipher.init(Cipher.ENCRYPT\_MODE, aesKey);
            byte[] encrypted = cipher.doFinal
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值