SpringBoot前后端数据传输加密「建议收藏」

SpringBoot前后端数据传输加密「建议收藏」采用的算法为AES算法1.编写加密工具类packagecom.pibigstar.utils;importjavax.crypto.Cipher;importjavax.crypto.KeyGenerator;importjavax.crypto.spec.SecretKeySpec;importorg.apache.commons.codec.binary.Base…

大家好,又见面了,我是你们的朋友全栈君。

采用的算法为AES算法

1. 编写加密工具类

package com.pibigstar.utils;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;

/** * 前后端数据传输加密工具类 * @author pibigstar * */
public class AesEncryptUtils { 
   
    //可配置到Constant中,并读取配置文件注入
    private static final String KEY = "abcdef0123456789";

    //参数分别代表 算法名称/加密模式/数据填充方式
    private static final String ALGORITHMSTR = "AES/ECB/PKCS5Padding";

    /** * 加密 * @param content 加密的字符串 * @param encryptKey key值 * @return * @throws Exception */
    public static String encrypt(String content, String encryptKey) throws Exception {
        KeyGenerator kgen = KeyGenerator.getInstance("AES");
        kgen.init(128);
        Cipher cipher = Cipher.getInstance(ALGORITHMSTR);
        cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(encryptKey.getBytes(), "AES"));
        byte[] b = cipher.doFinal(content.getBytes("utf-8"));
        return Base64.encodeBase64String(b);
    }

    /** * 解密 * @param encryptStr 解密的字符串 * @param decryptKey 解密的key值 * @return * @throws Exception */
    public static String decrypt(String encryptStr, String decryptKey) throws Exception {
        KeyGenerator kgen = KeyGenerator.getInstance("AES");
        kgen.init(128);
        Cipher cipher = Cipher.getInstance(ALGORITHMSTR);
        cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(decryptKey.getBytes(), "AES"));
        byte[] encryptBytes = Base64.decodeBase64(encryptStr);
        byte[] decryptBytes = cipher.doFinal(encryptBytes);
        return new String(decryptBytes);
    }

    public static String encrypt(String content) throws Exception {
        return encrypt(content, KEY);
    }
    public static String decrypt(String encryptStr) throws Exception {
        return decrypt(encryptStr, KEY);
    }


    public static void main(String[] args) throws Exception {
        String content = "派大星";
        System.out.println("加密前:" + content);

        String encrypt = encrypt(content, KEY);
        System.out.println("加密后:" + encrypt);

        String decrypt = decrypt(encrypt, KEY);
        System.out.println("解密后:" + decrypt);
    }
}

2. 前端

js 文件下载:https://pan.baidu.com/s/11LnXUnsMtGW5C8sycf2SDQ

导入 js 文件

    <script type="text/javascript" src = "js/aes.js"></script>
    <script type="text/javascript" src = "js/pad-zeropadding.js"></script>
    <script type="text/javascript" src = "js/security.js"></script>

发送数据

function sendData() { 
   
        alert("发送的数据:"+Encrypt(JSON.stringify({name:"派大星"})));
        $.ajax({
            type: "POST",
            url:"/save",
            data:Encrypt(JSON.stringify({name:"派大星"})),
            dataType:'json',
            contentType: "application/json",
            success: function(resData) { 
   
                alert("返回的数据:"+resData);
                alert("解密之后:"+Decrypt(resData));
                alert("解密之后转json对象:"+JSON.parse(Decrypt(resData)).name);
            }
        }); 
    }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142906.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PCBlayout设计「建议收藏」

    PCBlayout设计「建议收藏」一、PCB设计流程一般来说PCB基本设计流程:前期准备->PCB结构设计->PCB布局->布线->布线优化和丝印->网络和DRC检查和结构检查->制板。1、前期准备包括准备元件库和原理图,在开始进行布板时,得先完成原理图的设计。我们公司基本是用Protel99画图,我们常用的元件库也都基本具备,也是我们公司常用的标准。对于一些元件没有元件库的,需要自己根据元件

    2025年7月15日
    5
  • 直和和直积_什么是直积举个例子

    直和和直积_什么是直积举个例子今天又在文章中看到直和和直积的概念,顺手baidu了一下,粘贴下来,其实以前矩阵论有讲过的。。。还是到用的时候印象最深。![在这里插入图片描述](https://img-blog.csdnimg.cn/20200609171605249.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80ODA5NDczMg==,size_…

    2025年6月14日
    4
  • Java :JDK下载与安装教程

    Java :JDK下载与安装教程万事开头难。在了解什么是Java、Java语言的特点以及学习方法之后,本节将介绍如何搭建编写Java程序所需要的开发环境——JDK(JavaDevelopmentKit)。JDK是一种用于构建在Java平台上发布的应用程序、Applet和组件的开发环境,即编写Java程序必须使用JDK,它提供了编译和运行Java程序的环境。在安装JDK之前,首先要到Oracle…

    2022年5月13日
    43
  • 递归函数[通俗易懂]

    递归函数[通俗易懂]如果一个函数在内部调用自身,这个函数就叫做递归函数递归函数的简单定义如下:这只是一个简单的定义,什么也做不了。当然,你可以尝试会发生什么结果,理论上会永远运行下去,但实际操作时发现不一会儿程序就

    2022年7月1日
    37
  • mysql创建数据库的步骤_MySQL创建数据表

    mysql创建数据库的步骤_MySQL创建数据表MYSQL建立数据库的步骤:通过练习查询、创建数据库,并且向数据库内单个或通过txt文件批量插入数据的方法。

    2022年9月25日
    3
  • Quartus II 操作入门[通俗易懂]

    Quartus II 操作入门[通俗易懂]使用Quartus设计FPGA,简单包括以下流程:新建工程,写代码编译工程,找错误分配引脚,重编译下载配置,到硬件为保证设计的正确性,在编译后,一般还需要做仿真验证,然后下载至硬件,有两种仿真方式:-功能仿真-时序仿真新建工程,写代码创建工程文件夹在电脑上新建一个文件夹,例如E:\Lianxi_1。工程的文件将全都存在这个文件夹内,便于管理。一个工程对应一个文件夹。新建

    2022年10月15日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号