温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
  • 忘记密码?
登录注册×
获取短信验证码
其他方式登录
点击 登录注册 即表示同意 《亿速云用户服务条款》
  • 服务器
  • 数据库
  • 开发技术
  • 网络安全
  • 互联网科技
登 录 注册有礼
最新更新 网站标签 地图导航
产品
  • 首页 > 
  • 教程 > 
  • 开发技术 > 
  • spring mvc rest接口选择性加密解密实例分析

spring mvc rest接口选择性加密解密实例分析

发布时间:2022-07-26 17:48:25 来源:亿速云 阅读:197 作者:iii 栏目: 开发技术

这篇文章主要介绍了spring mvc rest接口选择性加密解密实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇spring mvc rest接口选择性加密解密实例分析文章都会有所收获,下面我们一起来看看吧。

    1.需求

    spring mvc rest接口以前是采用https加密的,但是现在需要更加安全的加密。
    而且不是对所有的接口进行加密,是对部分接口进行加密,接口返回值进行解密。

    2.分析

    实现方式有两种:

    • 1.Aspect + Annotation

    • 2.interceptor + requestParameter

    第一种方式是最灵活的:自定义注解,然后在Aspect中对注解的方法进行处理。

    第二种方法也能实现:自定义拦截器加请求参数与返回参数,即参数中有一个参数控制是否加密解密。

    第二种方式很明显参数冗余,管理不变,使用麻烦。
    第一种参数就很好了,扩展容易,使用容易,提倡使用。

    3.实现

    3.1注解方式

    3.1.1定义注解
    package com.annotation;
    
    import java.lang.annotation.*;
    
    @Target(ElementType.METHOD)
    //使用在方法级别上
    @Retention(RetentionPolicy.RUNTIME)
    //运行时有效
    @Documented
    //生成文档
    public @interface Encryption {
    }
    3.1.2定义注解Aspect切面
    package com.aop;
    import org.aspectj.lang.JoinPoint;
    import org.aspectj.lang.annotation.After;
    import org.aspectj.lang.annotation.Aspect;
    import org.aspectj.lang.annotation.Before;
    import org.aspectj.lang.annotation.Pointcut;
    import org.springframework.stereotype.Component;
    @Aspect
    //Aspect注解
    @Component
    //spring bean的自动注解
    //aop切面
    public class EncryptionAspect {
    /**
    * 加密切点
    */
    @Pointcut("@annotation(com.startimes.selfserviceApp.annotation.Encryption)")
    public void encryptionPointcut(){
    }
    
    /**
    * 前置通知--解密
    * @param joinPoint
    */
    @Before("encryptionPointcut()")
    public void doBefore(JoinPoint joinPoint){
    System.out.println("encryptionPointcut");
    }
    
    /**
    * 后置通知--加密
    * @param joinPoint
    */
    @After("encryptionPointcut()")
    public void doAfter(JoinPoint joinPoint){
    System.out.println("encryptionPointcutAfter");
    }
    }
    3.1.3使用

    在方法前面加入注解:
    @Encryption

    spring mvc rest接口选择性加密解密实例分析

    spring mvc rest接口选择性加密解密实例分析

    3.2拦截器

    3.2.1定义拦截器
    package com.interceptor;
    
    import org.springframework.ui.ModelMap;
    import org.springframework.web.context.request.WebRequest;
    import org.springframework.web.context.request.WebRequestInterceptor;
    public class EncryptionInterceptor implements WebRequestInterceptor {
    @Override
    public void preHandle(WebRequest request) throws Exception {
    //TODO:自定义代码
    System.out.println("preHandle");
    }
    @Override
    public void postHandle(WebRequest request, ModelMap model) throws Exception {
    //TODO:自定义代码
    System.out.println("postHandle");
    }
    @Override
    public void afterCompletion(WebRequest request, Exception ex) throws Exception {
    //TODO:自定义代码
    System.out.println("afterCompletion");
    }
    }
    3.2.2配置拦截器

    spring mvc rest接口选择性加密解密实例分析

    3.2.3使用

    spring mvc rest接口选择性加密解密实例分析

    不使用参数,如果使用参数就在拦截器里判断参数,然后进行相应的处理。

    4.加密

    4.1对称加密

    对于无需加密的接口采用数字签名加密,即https
    对于需要加密的接口采用将MD5(session)作为密钥的对称加密
    缺点:需要 服务器与客户端有相同的session

    4.2非对称加密

    对于无需加密的接口采用非对称加密,即https+双向认证+自定义证书
    对于需要加密的接口采用非对称加密。

    5.加密算法

    5.1MD5算法

    MD5 用的是 哈希函数,它的典型应用是对一段信息产生 信息摘要,以 防止被篡改。严格来说,MD5 不是一种 加密算法 而是 摘要算法。无论是多长的输入,MD5 都会输出长度为 128bits 的一个串 (通常用 16 进制 表示为 32 个字符)。

    5.2SHA1算法

    SHA1 是和 MD5 一样流行的 消息摘要算法,然而 SHA1 比 MD5 的 安全性更强。对于长度小于 2 ^ 64 位的消息,SHA1 会产生一个 160 位的 消息摘要。基于 MD5、SHA1 的信息摘要特性以及 不可逆 (一般而言),可以被应用在检查 文件完整性 以及 数字签名 等场景。

    5.3HMAC算法

    HMAC 是密钥相关的 哈希运算消息认证码(Hash-based Message Authentication Code),HMAC 运算利用 哈希算法 (MD5、SHA1 等),以 一个密钥 和 一个消息 为输入,生成一个 消息摘要 作为 输出。
    HMAC 发送方 和 接收方 都有的 key 进行计算,而没有这把 key 的第三方,则是 无法计算 出正确的 散列值的,这样就可以 防止数据被篡改。

    5.4AES/DES/3DES算法

    AES、DES、3DES 都是 对称 的 块加密算法,加解密 的过程是 可逆的。常用的有 AES128、AES192、AES256 (默认安装的 JDK 尚不支持 AES256,需要安装对应的 jce 补丁进行升级 jce1.7,jce1.8)。

    5.5DES算法

    DES 加密算法是一种 分组密码,以 64 位为 分组对数据 加密,它的 密钥长度 是 56 位,加密解密 用 同一算法。
    DES 加密算法是对 密钥 进行保密,而 公开算法,包括加密和解密算法。这样,只有掌握了和发送方 相同密钥 的人才能解读由 DES加密算法加密的密文数据。因此,破译 DES 加密算法实际上就是 搜索密钥的编码。对于 56 位长度的 密钥 来说,如果用 穷举法 来进行搜索的话,其运算次数为 2 ^ 56 次。

    5.63DES算法

    是基于 DES 的 对称算法,对 一块数据 用 三个不同的密钥 进行 三次加密,强度更高。

    5.7AES算法

    AES 加密算法是密码学中的 高级加密标准,该加密算法采用 对称分组密码体制,密钥长度的最少支持为 128 位、 192 位、256 位,分组长度 128 位,算法应易于各种硬件和软件实现。这种加密算法是美国联邦政府采用的 区块加密标准。
    AES 本身就是为了取代 DES 的,AES 具有更好的 安全性、效率 和 灵活性。

    5.8RSA算法

    RSA 加密算法是目前最有影响力的 公钥加密算法,并且被普遍认为是目前 最优秀的公钥方案 之一。RSA 是第一个能同时用于 加密 和 数字签名 的算法,它能够 抵抗 到目前为止已知的 所有密码攻击,已被 ISO 推荐为公钥数据加密标准。
    RSA 加密算法 基于一个十分简单的数论事实:将两个大 素数 相乘十分容易,但想要对其乘积进行 因式分解 却极其困难,因此可以将 乘积 公开作为 加密密钥。

    5.9ECC算法

    ECC 也是一种 非对称加密算法,主要优势是在某些情况下,它比其他的方法使用 更小的密钥,比如 RSA 加密算法,提供 相当的或更高等级 的安全级别。不过一个缺点是 加密和解密操作 的实现比其他机制 时间长 (相比 RSA 算法,该算法对 CPU 消耗严重)。

    6.加密算法比较

    6.1散列算法

    名称

    安全性

    速度

    SHA-1

    MD5

    6.2对称加密算法

    名称

    密钥长度

    运行速度

    安全性

    资源消耗

    DES

    56

    较快

    3DES

    112、168

    AES

    128、192、256

    6.3非对称加密算法比较

    名称

    成熟度

    安全性

    运算速度

    资源消耗

    RSA

    ECC

    关于“spring mvc rest接口选择性加密解密实例分析”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“spring mvc rest接口选择性加密解密实例分析”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。

    向AI问一下细节
    推荐阅读:
    1. spring  MVC
    2. asp.net MVC下如何使用rest

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    springmvc rest
    • 上一篇新闻:
      Docker怎么安装部署单机版Rocket
    • 下一篇新闻:
      .Net Core怎么使用layui多文件上传

    猜你喜欢

    • Linux 定时器介绍
    • 三步学会SSH端口代理(全网最简单、实用)
    • apache安装教程详解
    • 使用wml进行npm模块调试
    • CommonJS/AMD/UMD/ES Module介绍和区别
    • get和post请求的区别
    • Windows Terminal完整指南
    • android 自定义控件 使用declare
    • Gradle构建基本原理
    • Ingress和Ingress Controller的理解
    最新资讯
    • iconv在RESTful API中的编码处理
    • 字符编码标准化iconv的自动化工具介绍
    • iconv与UTF-8编码的最佳实践分享
    • PHP iconv在PDF文档处理中的编码问题
    • 字符编码兼容性iconv的兼容测试框架
    • iconv在Web服务器配置中的编码应用
    • 字符编码转换iconv的性能瓶颈分析
    • PHP iconv对GBK编码的特殊处理
    • iconv在跨域请求中的编码处理技巧
    • 字符编码统一iconv与配置文件的整合
    相关推荐
    • 如何在Spring Boot中使用AOP实现REST接口
    • spring MVC中接口参数的实例分析
    • JEESZ REST服务接口文档
    • Spring MVC接口如何使用Mock进行测试
    • asp.net MVC下怎么使用rest
    • 如何实现Spring Boot接口参数的加密解密操作
    • 怎么实现 Spring Boot 接口参数加密解密
    • 如何利用SpringBoot创建Rest接口API
    • 如何实现rest接口权限升级
    • 怎么让Spring Rest接口中路径参数可选

    相关标签

    springcloud spring cloud spring boot 入门 mvc视图 spring mvc spring cloud alibab springsecurity spring aop ext js mvc asp.net mvc spring tool suit spring源码 spring session spring3 springbean springfox-swagger2 springboot2.x Spring JPA SpringData springjpa
    AI

    玻璃钢生产厂家太原玻璃钢卡通人物雕塑商场开业美陈方案3d玻璃钢雕塑有裂痕正常吗吉林省玻璃钢雕塑厂家报价衢州水果玻璃钢雕塑大型玻璃钢雕塑摆件有哪些黄石玻璃钢雕塑人物自贡市玻璃钢雕塑定制黄石玻璃钢雕塑厂家新昌玻璃钢雕塑厂家玻璃钢花盆-京鑫和公司山西喷泉雕塑玻璃钢玻璃钢浮雕雕塑的意义凉山玻璃钢商场美陈宁波玻璃钢仿铜雕塑定制玻璃钢雕塑专业吗南通玻璃钢雕塑定做价格玻璃钢浑天仪雕塑设计加工江门玻璃钢仿真雕塑内蒙古商场美陈价格四川秋季商场美陈供货商抚州动物玻璃钢雕塑生产厂家北京常见商场美陈市场报价山西景观玻璃钢雕塑定制嘉兴玻璃钢广场雕塑厂家供应山东玻璃钢雕塑哪里有秦淮春季商场美陈商场整体形象美陈十堰做玻璃钢和不锈钢雕塑爆销玻璃钢动物雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

    玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化