江西建设监督网站引流推广的方法

bicheng/2026/1/16 20:00:47/文章来源:
江西建设监督网站,引流推广的方法,建设网站需要做的工作内容,创业众筹平台背景 最近项目要有向外部提供服务的能力#xff0c;但是考虑到数据安全问题#xff0c;要对接口进行加解密#xff1b;实现加解密的方案有很多#xff0c;比如过滤器、拦截器、继承RequestResponseBodyMethodProcessor什么的#xff0c;不过我最近正在了解ResponseBodyAd…背景 最近项目要有向外部提供服务的能力但是考虑到数据安全问题要对接口进行加解密实现加解密的方案有很多比如过滤器、拦截器、继承RequestResponseBodyMethodProcessor什么的不过我最近正在了解ResponseBodyAdvice RequestBodyAdvice这俩注解本着在实践中应用的目的就准备使用这两个注解来实现加解密功能。 然而配置好后请求怎么都进不到这两个注解的类里。摸索了一天的时间RestController 和ResponseBody 都加了也确认已经扫描进容器中管理了可就是无法生效。 原因 后来发现项目中之前有对所有的controller进行返回结果的统一包装使用的是继承RequestResponseBodyMethodProcessor类来实现 刚刚ResponseBodyAdvice和RequestBodyAdvice一直无法生效就在RequestResponseBodyMethodProcessor这里面做了加密的动作后来不经意间把这个类在WebMvcConfigurer中导入的代码注掉了惊奇的发现ResponseBodyAdvice RequestBodyAdvice这俩注解生效了。 所以初步定位 ResponseBodyAdvice RequestBodyAdvice 和RequestResponseBodyMethodProcessor 会冲突导致不生效。 解决 RequestResponseBodyMethodProcessor 里的逻辑抽取到ResponseBodyAdvice里本来这个也是对返回结果进行增强的所以放到这里也非常合理。 同时扩展了加密的逻辑。 核心代码 ControllerAdvice public class ResponseProcessor implements ResponseBodyAdviceObject {private ObjectMapper om new ObjectMapper();AutowiredEncryptProperties encryptProperties;Overridepublic boolean supports(MethodParameter methodParameter, Class? extends HttpMessageConverter? aClass) {return methodParameter.hasMethodAnnotation(Encrypt.class);}Overridepublic Object beforeBodyWrite(Object body, MethodParameter methodParameter, MediaType mediaType, Class? extends HttpMessageConverter? aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {byte[] keyBytes encryptProperties.getKey().getBytes();try {if(!methodParameter.hasMethodAnnotation(NoResponseWrapperAnnotation.class)){body new ResponseWrapper(body);}body AESUtils.encrypt(JSONObject.toJSONString(body),encryptProperties.getKey());} catch (Exception e) {e.printStackTrace();}return body;} } java ControllerAdvice public class RequestProcessor extends RequestBodyAdviceAdapter {Autowiredprivate EncryptProperties encryptProperties;Overridepublic boolean supports(MethodParameter methodParameter, Type targetType, Class? extends HttpMessageConverter? converterType) {return methodParameter.hasMethodAnnotation(Decrypt.class) || methodParameter.hasParameterAnnotation(Decrypt.class);}Overridepublic HttpInputMessage beforeBodyRead(final HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class? extends HttpMessageConverter? converterType) throws IOException {byte[] body new byte[inputMessage.getBody().available()];inputMessage.getBody().read(body);try {String decrypt AESUtils.decrypt(new String(body), encryptProperties.getKey());final ByteArrayInputStream bais new ByteArrayInputStream(decrypt.getBytes());return new HttpInputMessage() {Overridepublic InputStream getBody() throws IOException {return bais;}Overridepublic HttpHeaders getHeaders() {return inputMessage.getHeaders();}};} catch (Exception e) {e.printStackTrace();}return super.beforeBodyRead(inputMessage, parameter, targetType, converterType);} } java public class AESUtils {private static final String KEY_ALGORITHM AES;private static final String DEFAULT_CIPHER_ALGORITHM AES/ECB/PKCS5Padding;//默认的加密算法public static String getKey(int len){if(len % 16 ! 0){System.out.println(长度要为16的整数倍);return null;}char[] chars 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.toCharArray();char[] uuid new char[len];if (len 0) {for (int i 0; i len; i) {int x (int) (Math.random() * (len - 0 1) 0);uuid[i] chars[x % chars.length];}}return new String(uuid);}public static String byteToHexString(byte[] bytes){StringBuffer sb new StringBuffer();for (int i 0; i bytes.length; i) {String strHexInteger.toHexString(bytes[i]);if(strHex.length() 3){sb.append(strHex.substring(6));} else {if(strHex.length() 2){sb.append(0 strHex);} else {sb.append(strHex);}}}return sb.toString();}/*** AES 加密操作** param content 待加密内容* param key 加密密码* return 返回Base64转码后的加密数据*/public static String encrypt(String content, String key) {try {Cipher cipher Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM);// 创建密码器byte[] byteContent content.getBytes(utf-8);cipher.init(Cipher.ENCRYPT_MODE, getSecretKey(key));// 初始化为加密模式的密码器byte[] result cipher.doFinal(byteContent);// 加密return org.apache.commons.codec.binary.Base64.encodeBase64String(result);//通过Base64转码返回} catch (Exception ex) {ex.printStackTrace();}return null;}/*** AES 解密操作** param content* param key* return*/public static String decrypt(String content, String key) {try {//实例化Cipher cipher Cipher.getInstance(DEFAULT_CIPHER_ALGORITHM);//使用密钥初始化设置为解密模式cipher.init(Cipher.DECRYPT_MODE, getSecretKey(key));//执行操作byte[] result cipher.doFinal(org.apache.commons.codec.binary.Base64.decodeBase64(content));return new String(result, utf-8);} catch (Exception ex) {ex.printStackTrace();}return null;}private static SecretKeySpec getSecretKey(final String key) throws UnsupportedEncodingException {//返回生成指定算法密钥生成器的 KeyGenerator 对象 // KeyGenerator kg null;// kg KeyGenerator.getInstance(KEY_ALGORITHM); // // //AES 要求密钥长度为 128 // kg.init(128, new SecureRandom(key.getBytes())); // // //生成一个密钥 // SecretKey secretKey kg.generateKey();return new SecretKeySpec(Arrays.copyOf(key.getBytes(utf-8), 16), KEY_ALGORITHM);// 转换为AES专用密钥} }

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

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

相关文章

佛山市建设工程交易中心网站学视频剪辑报个班的多少钱

目录 相似度计算基于用户的协同过滤(UserCF)算法评估基于物品的协同过滤(ItemCF)协同过滤算法的权重改进协同过滤算法的问题分析思考学习参考 相似度计算 杰卡德(Jaccard)相似系数 Jaccard 系数是衡量两个…

网站哪里可以做做网站还赚钱么

在学习玩string后我们开始学习vector,本篇博客将对vector进行简单的介绍,还会对vector一些常用的函数进行讲解 vector的介绍 实际上vector就是一个数组的数据结构,但是vector是由C编写而成的,他和数组也有本质上的区别&#xff…

陕西住房与建设厅网站西部数码

1、600余家互联网企业发出倡议:积极维护防汛救灾网络秩序、截至目前,包括百度、微博、抖音、快手、小红书、哔哩哔哩、阿里、腾讯等8家超大型互联网平台在内的600余家企业发出倡议书,唱响了万众一心、聚力救灾救援的网上主旋律 2、苏州调整耗…

求一个做健身餐的网站气象服务网站建设

题目链接 2719. 统计整数数目 - 力扣(LeetCode) 解题思路 题目实际上求的是[num1,...num2]中,数位和在[min_sum,...max_sum]的数的个数。对于这种区间[l,...r]的问题,我们可以考虑转化为求[1,...r]和[1,...l-1]的答案&#xff…

网站建设备案多长时间重庆市公司网站备案在哪了

文件上传一个经常用到的功能,它有许多中实现的方案。 页面表单 RFC1897规范 http协议上传 页面控件(flash/html5/activeX/applet) RFC1897规范 http协议上传 页面控件(flash/html5/activeX/applet) 自定义数据规范 http协议上传 页面控件(flash/html5/act…

做毕业设计的参考文献网站wordpress标签加icon

1024“程序员节”,58同城招聘研究院发布程序员行业大数据报告显示,程序员男性占比高达87.29%。 作者:朝晖 1024“程序员节”,58同城招聘研究院发布程序员行业大数据报告显示,程序员男性占比高达87.29%,北…

网站设计制作托管维护翻页h5制作软件

java实现pdf转word的办法有: 1、pdfbox poi 2、free spire.pdf 3、aspose-pdf free spire.pdf 的效果比aspose-pdf稍差一些,但是 aspose-pdf 是付费的,spire.pdf也有付费版本

熟练做网站需要了解什么怎样创办自己的公众号

说明 AP510X 是一系列外围电路简洁的单路线性 LED 恒 流芯片,适用于 3-60V 电压范围的 LED 恒流调光 领域。 AP510X 采用我司专利算法,可以实现高精度的恒 流效果,输出电流恒流精度≤ 3 %,电源供电工作 范…

ps制作个人网站首页网站建设自助建站云建站

在工作中发现mybatis默认的连接池POOLED,运行时间长了会报莫名其妙的连接失败错误。因此采用阿里巴巴的Druid数据源(码云链接 ,中文文档链接)。 mybatis更多数据源参考博客链接 。 1 环境 eclipse mars2 maven3.3.9 mysql5.7 2 …

唐山培训网站建设世代网络高端企业网站建设设计功能公司

网址不太好访问的话,请从下面我提供的分享下载 Download cuDNN v8.6.0 (October 3rd, 2022), for CUDA 11.x 此资源适配 cuda11.x 将bin和include文件夹里的文件,分别复制到C盘安装CUDA目录的对应文件夹里 安装cuda时自动设置了 CUDA_PATH_V11_8 及path C:\Progra…

做网站需要用到什么技术无代码网站开发平台有哪些

作者:古琦 在现代软件架构中,微服务已成为构建可扩展和灵活应用程序的流行方式。每个微服务负责应用程序的一部分功能,它们共同工作以提供完整的服务。由于微服务架构的分散特性,监控变得至关重要,有效的微服务监控是…

wordpress网站排名婚介 东莞网站建设

文章目录 概要样例代码 概要 当第一次运行服务端时正常,第二次运行时出现Bind failed问题。 在实际使用中,如果您尝试启动一个服务端程序并且遇到了 “Bind failed” 的错误信息,这通常意味着尝试绑定(bind)的端口已…

邢台网站建设公司wordpress添加语系

个人主页:【😊个人主页】 系列专栏:【❤️初识JAVA】 文章目录 前言正则表达式正则表达式语法正则表达式的特点捕获组实例 前言 如果我们想要判断给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”)&#xff0c…

龙岗个性化网站建设价格低优秀网站案例

在我们深入了解 Angular 2 中 NgModule、Component、Injectable 等常见的装饰器之前,我们要先了解 TypeScript 中的装饰器。装饰器是一个非常酷的特性,最早出现在 Google 的 AtScript 中,它出现的目的是为了让开发者,开发出更容易…

企业网站seo推广网站开发实习总结

嵌入式的发展怎么样? 嵌入式系统领域一直在迅速发展,伴随着物联网、智能设备、汽车电子、医疗设备等应用的不断增加,对嵌入式技术的需求也在不断扩大。因此,嵌入式领域仍然是一个充满机会的领域,为专业人士提供…

建设银行客户投诉网站网站建设预算描述

【每日一题】1267. 统计参与通信的服务器 1267. 统计参与通信的服务器题目描述解题思路 1267. 统计参与通信的服务器 题目描述 这里有一幅服务器分布图,服务器的位置标识在 m * n 的整数矩阵网格 grid 中,1 表示单元格上有服务器,0 表示没有…

wordpress网站怎么百度的到做外贸需要网站

目录 2386. 找出数组的第 K 大和 题目描述: 实现代码与解析: 优先级队列(小顶堆) 原理思路: 2386. 找出数组的第 K 大和 题目描述: 给你一个整数数组 nums 和一个 正 整数 k 。你可以选择数组的任一 子…

汝州网站建设汝州秘塔猫ai写作官网

1.把GameInfo.cs PlayerModel.cs Vector3.cs Vector4.cs PlayerStateConstans.cs GameState.cs依次粘到model文件夹中,此时项目没有错误,如下图所示; 对应处所修改的代码如下: case LoginProtocol.LOGIN_SRES://1 {Debug.Log(&qu…

做设计网站模块的网站微信小程序开发需要哪些技术

Ubuntu上搭建TFTP服务 TFTP服务简介搭建TFTP服务安装TFTP服务修改配置文件 重启服务 TFTP服务简介 TFTP是一个基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适用于开销不大、不复杂的应用场合。TFTP协议专门为小文件传输而设计,只…

如何做120急救网站比价网站模板

目标网址:https://zbcg.sznsyy.cn/homeNotice 测试时间: 2024-01-03 1 老规矩,打开Chrome无痕浏览,打开链接,监测网络,通过刷新以及上下翻页可以猜测出数据的请求是通过接口frontPageAnnouncementList获取的,查看返回可以看出来数据大概率是经过aes加密的,如图: 通过查看该请…