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);
            }
        }); 
    }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • vue v-if 多条件_vue vnode

    vue v-if 多条件_vue vnodev-if在模板中,可以根据条件进行渲染。条件用到的是v-if、v-else-if以及v-else来组合实现的。示例代码如下:<divid="app"><p

  • php 下载文件的头信息 Determine Content Type

    php 下载文件的头信息 Determine Content Type

    2021年10月14日
  • IIS 无法启动:发生意外错误0x8ffe2740 的原因

    IIS 无法启动:发生意外错误0x8ffe2740 的原因发生意外错误0x8ffe2740原因如果系统中存在端口冲突就有可能发生本情况.IIS默认使用80端口进行HTTP通信.如果除IIS外的应用程序正在运行并且正在相同的IP地址上使用80端口,在您试图使用IIS管理器启动网站时您也可能收到该错误讯息.解决方法要解决这个问题,您可以进行以下任一项操作:•在IIS管理器中更改网站绑定端口为除80端口外的其它端口.•停止正在使用80端口…

  • Python安装失败_python第三方库安装失败

    Python安装失败_python第三方库安装失败详细内容相信很多刚开始入门Python的菜鸟们在安装python第三方库的时候,多多少少都会遇到一些安装失败的问题。下面,我将结合自身经验,分享一下在windows操作系统上此类问题的解决办法。一、清楚自己所安装的python版本(2.7或3.6,andmore);(推荐学习:Python视频教程)二、检查是否安装了pip,pip版本是否可以使用;三、网络是否正常;如果确认上面都没有问题的话,就…

  • javascript动画效果_js动画效果animate

    javascript动画效果_js动画效果animate此案例实现的是侧边栏的滑入与滑出,主要用定时器来实现物体滑动时速度的控制,从而实现滑入滑出效果,下面是效果图:下面是实现的js代码:window.onload=function(){varodiv=document.getElementById(“mydiv”);odiv.onmouseover=function(){

    2022年10月15日
  • WEB功能测试说明

    WEB功能测试说明

发表回复

您的电子邮箱地址不会被公开。

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