【数据加密、解密】前后端数据传输的过程中,如何进行数据加密传输,保证数据的传输安全,防止被他人窃取

 

 前端进行参数传递的时候 ,有些数据为了安全起见还是需要加密传输的,比如用户密码,比如登录的时候,注册的时候,用户输入的密码,如果明文进行传输还是不太安全的,所以一般可以进行加密后传递到后端。

那么就有这几个问题:

·前端如何进行加密

·后端如何进行解密

·用什么加密算法

一般是用3DES的加密解密方式

前端引用3DES加密库,对数据进行加密,然后传输到后端,后端通过3DES进行解密操作就可以了。

后端java代码如下:加密、解密:

代码中的 SECRECY_KEY  就是 我们用到的加密密钥。你可以改成你自己的。我这里是3DES加密,用到24位的加密密钥。
    public final static String SECRECY_KEY = "123456789987654321123456"; // 24位

package com.xxx.utils;import org.apache.commons.lang3.StringUtils;
import org.apache.http.client.utils.DateUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.util.Date;/*** 3DES加密解密工具类*/
public class ThreeDESUtils {private final static Logger logger = LoggerFactory.getLogger(ThreeDESUtils.class);/*** 加解密统一编码方式*/private final static String ENCODING = "utf-8";/*** 加解密方式*/private final static String ALGORITHM  = "DESede";/***加密模式及填充方式*/private final static String PATTERN = "DESede/CBC/PKCS5Padding";public final static String SECRECY_KEY = "123456789987654321123456"; // 24位/*** 数据加密* @param message       待加密的数据* @param ivHex         加密偏移量设置* @return              * @throws Exception*/public static String encrypt(String message, String ivHex) throws Exception {if(StringUtils.isBlank(ivHex)){ivHex = DateUtils.formatDate(new Date(),"yyyyMMdd");}final SecretKey key = new SecretKeySpec(SECRECY_KEY.getBytes("utf-8"), ALGORITHM);final IvParameterSpec iv = new IvParameterSpec(ivHex.getBytes("utf-8"));final Cipher cipher = Cipher.getInstance(PATTERN);cipher.init(Cipher.ENCRYPT_MODE, key, iv);final byte[] plainTextBytes = message.getBytes("utf-8");final byte[] cipherText = cipher.doFinal(plainTextBytes);return new sun.misc.BASE64Encoder().encode(cipherText);}/*** 3DES数据解密* @param message       待解密的数据。这个数据已经进行了一次Base64加密* @param ivHex         加密偏移量设置* @return* @throws Exception*/public static String decrypt(String message, String ivHex) throws Exception {if(StringUtils.isBlank(ivHex)){ivHex = DateUtils.formatDate(new Date(),"yyyyMMdd");}final SecretKey key = new SecretKeySpec(SECRECY_KEY.getBytes("utf-8"), ALGORITHM);final IvParameterSpec iv = new IvParameterSpec(ivHex.getBytes("utf-8"));final Cipher decipher = Cipher.getInstance(PATTERN);decipher.init(Cipher.DECRYPT_MODE, key, iv);final byte[] plainText = decipher.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(message));return new String(plainText, "UTF-8");}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/103234.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Maven系列第6篇:生命周期和插件详解?

maven系列目标:从入门开始开始掌握一个高级开发所需要的maven技能。 这是maven系列第6篇。 整个maven系列的内容前后是有依赖的,如果之前没有接触过maven,建议从第一篇看起,本文尾部有maven完整系列的连接。 前面我们使用maven…

刷新页面,数据丢失

刷新页面数据丢失原因很多,其中有一种是解析错误,没有解构出来。 报错内容如下(类似这个报错): 数据结构如下: this.$router.push({name: DetailComparison,query: {rowDetail: rowDetail || null} }) 修改数据结构&#xff1a…

OpenAI科学家谈GPT-4的潜力与挑战

OpenAI Research Scientist Hyung Won Chung 在首尔国立大学发表的一场演讲。 模型足够大,某些能力才会显现,GPT-4 即将超越拐点并在其能力上实现显着跳跃。GPT-3 和 GPT-4 之间的能力仍然存在显着差距,并且尝试弥合与当前模型的差距可能是无…

使用eBPF加速阿里云服务网格ASM

背景 随着云原生应用架构的快速发展,微服务架构已经成为了构建现代应用的主要方式之一。而在微服务架构中,服务间的通信变得至关重要。为了实现弹性和可伸缩性,许多组织开始采用服务网格技术来管理服务之间的通信。 Istio作为目前最受欢迎的…

找单身狗1

一个数组中只有1个数字出现1次,其他数字都是成对出现,找出这个单身狗。 对于这个问题,这里提供两种思路: 1.暴力求解 这种方法是最容易想到的,分别统计每个元素出现的次数,找到出现一次的那个数字即可。然而毕竟是暴…

C++基础之类二(类的实例化,This指针)

目录 类的实例化 概念 类和对象的区别 计算一个类 不同的类的大小 类的存储模型 内存对齐 让结构体按照指定的默认对齐数进行对齐 确定偏移量 大小端字节序 This指针 概念 this指针四大特性 一些关于this指针的问题 总结 之前学过了类,但在编程中类无法直接使用&…

docker-compose 部署示例

文章目录 docker-compose文件格式docker-compose 下载 docker-compose文件格式 这个软件的实际很小,只是根据配置文件产生一些docker命令来执行可以。 配置文件本身是yml的格式,如下 version: 3.5services:# Etherpad: real-time collaborative docume…

MQTT 主题通配符

MQTT 主题通配符 MQTT 主题通配符包含单层通配符 及多层通配符 #,主要用于客户端一次订阅多个主题。 注意:通配符只能用于订阅,不能用于发布。 单层通配符 加号 (“” ) 是用于单个主题层级匹配的通配符。在使用单层通配符时,…

鼎鑫鸿鄴利用国家的策略优势和满足全球需求并驾齐驱

随着全球对可再生能源的需求不断增长,鼎鑫鸿鄴新能源科技有限公司正充分利用中国政府的策略优势,积极满足全球能源使用需求,并在可再生能源领域崭露头角。中国属于全球最大的太阳能市场,在技术研发、产能建设和市场规模等方面拥有…

华为HCIP题库h12-821题库新增30题

901、 (多选题)下面关于BGP中的公认属性的描述,正确的是 A、公认必属性是所有BGP路由器都识别,且必须存在于Updata消息中 B、BGP必须识别所有公认属性 C、公认属性分为公认必遵和可选过渡两种 D、公认任意属性是所有BGP造由器…

[Spring] SpringMVC 简介(一)

目录 一、SpringMVC 简介 1、什么是 MVC 2、什么是 SpringMVC 3、SpringMVC 实现原理 4、SpringMVC 的特点 二、简单案例 1、引入依赖 2、在 web.xml 中配置前端控制器 DispatcherServlet 3、创建 SpringMVC 的配置文件 4、创建请求控制器 5、测试页面 6、访问不到 …

数学建模——人工神经网络模型

一、人工神经网络简介 1、神经网络起源与应用 1943年心理学家McCulloch和数学家Pitts提出神经元生物数学模型(M-P模型),后来人工神经网络(Artifical Neural Network,ANN)是在生物神经网络(Biological Neural Network,BNN)基础上发展起来的&a…

网络通信错误代码列表 HTTP 、FTP

HTTP 1xx(临时响应):表示临时响应并需要请求者继续执行操作的状态代码。 100 (继续) 请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。 101 (切换协议…

Json的操作

Json解析float报错&#xff0c;要使用double 第一种 void Start(){//Convert();Convertddd();}public void Convertddd(){ //LineDataDic d new LineDataDic();JsonData d new JsonData();for (int i 0; i < 5; i){LineData convertData new LineData();convertData.ta…

【LeetCode】2578. 最小和分割

难度&#xff1a;简单 题目 给你一个正整数 num &#xff0c;请你将它分割成两个非负整数 num1 和 num2 &#xff0c;满足&#xff1a; num1和num2直接连起来&#xff0c;得到 num各数位的一个排列。 换句话说&#xff0c;num1 和 num2 中所有数字出现的次数之和等于 num 中…

Kestra:高性能、基于 Java 的编排平台

Kestra 是一个基于 Java 构建的事件驱动的编排和调度平台&#xff0c;它利用 YAML 进行工作流定义&#xff08;您可以将其视为工作流的 Terraform&#xff09;。 Kestra 可以简化计划和事件驱动的工作流程。通过将基础设施即代码最佳实践引入数据、流程和微服务编排&#xff0…

MobaXterm使sftp目录与cmd目录同步

MobaXterm使sftp目录与cmd目录同步 创建session时在ssh菜单栏中选择Advanced SSH settings其中SSH-browser type 选择SCP&#xff08;enhanced speed&#xff09; 勾选Follow SSH path

Red Hat 8 安装Docker返回找不到镜像的问题(Status code: 404)

文章目录 小结问题解决参考 小结 Red Hat 8 yum 指令安装Docker社区版时返回了Status code: 404错误&#xff0c;也就是找不到相应的仓库镜像&#xff0c;进行了解决。 问题 环境: Red Hat 8.3 首先安装了 yum install -y yum-utils配置Red Hat 8的Docker的镜像仓库&#x…

Ubuntu18.04中QT安装下载安装pcl和vtk以及使用过程中踩过的坑

一、先记录一下下载过程中踩过的坑 问题1&#xff1a;QVTKOpenGLNativeWidget和QVTKWidget 之前从来没有接触过QT中显示3D点云方面的知识&#xff0c;了解到可以用pcl&#xff0c;然后在网上各种找pcl下载的相关内容&#xff0c;想要在QT中显示出来&#xff0c;需要用到VTK&a…

TS(五):装饰器

装饰器 启用装饰器支持类装饰器定义并使用装饰器对比不使用装饰器装饰器叠加实现消息提示统一响应装饰器工厂 方法装饰器登录状态验证数据请求 属性装饰器大小写转换 元数据安装依赖基础用法 参数装饰器验证参数是否为必填项 启用装饰器支持 修改 tsconfig.json {"exper…