最近利用闲暇时间写了一个博客系统,主要参考wordpress,主要目的是为了提高自己的技术能力。
写代码写了两年多,联系到之前在学校的时候写过的一个博客系统,发现工作中开发的系统,技术上基本一致,业务逻辑方面存在差异。
比如博客系统可能面对高并发的场景,比如某个时间段访问量,再比如博客系统为了最大程度吸引用户(换句话说,提高用户粘性),在界面上美观,使用上更加方便。通常界面美观伴随着前端js库的增多,特别是一些非常好看的画面或者图像是极其消耗带宽的,带宽如果不给力的话,页面半天打不开,同样也对于用户而言体验不好。

只想表达一个意思,软件开发万变不离其宗,本质上基本都是一个CMS系统(也许这句话武断了)。

话不多说,今天我要讲的关于SpringBoot加密。

SSM框架和SpringBoot中加密是不一样的,比如在SSM框架中可以使用Druid进行加密(主要对数据库密码或者是其它重要配置信息加密),但是在SpringBoot就不一定会适用。

关于Druid加密,可以参考我的博客园这篇文章:Druid加密

SpringBoot使用jasypt-spring-boot-starter加密,具体步骤如下:

一、导入Maven依赖(注意,我的springboot版本为1.5.9,建议最好版本别相差太多,否则会出现依赖冲突等问题)

dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>1.16</version>
</dependency>

   

二、编写测试类

package cn.test;import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.EnvironmentPBEConfig;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.test.context.junit4.SpringRunner;import com.blog.springboot.Application;
import com.blog.springboot.service.UsersService;import cn.hutool.core.util.RandomUtil;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class JunitTest {@Testpublic void testEncrypt() throws Exception {StandardPBEStringEncryptor standardPBEStringEncryptor = new StandardPBEStringEncryptor();EnvironmentPBEConfig config = new EnvironmentPBEConfig();config.setAlgorithm("PBEWithMD5AndDES");          // 加密的算法,这个算法是默认的config.setPassword("lyh");                        // 加密的密钥
            standardPBEStringEncryptor.setConfig(config);//加密用户信息String plainText = "youcong";String encryptedText = standardPBEStringEncryptor.encrypt(plainText);//加密密码信息String Enpassword = "youcong";String EnpasswordText = standardPBEStringEncryptor.encrypt(Enpassword);String db="wordpress";String dbEnc = standardPBEStringEncryptor.encrypt(db);//加密地址信息String DBAUrl = "jdbc:mysql://localhost:3306/blog?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false";String DBAUrlText = standardPBEStringEncryptor.encrypt(DBAUrl);System.out.println("用户:"+encryptedText);System.out.println("密码:"+EnpasswordText);System.out.println("地址:"+DBAUrlText);System.out.println("db:"+dbEnc);}}

三、在springboot的配置文件添加如下配置(这里我以application.yml配置为例)

jasypt:encryptor:password: lyh

问:为什么要加这段?
答:这里的password对应的值lyh相当于密钥,主要用于解密。
你在单元测试中以什么作为加密,那么在yml中就以什么作为解密。

四、配置application.yml中的数据源

datasource:url: ENC(cY3NmQF349TpBB0z0KavaiEPNDux/mKEss0UFeA11VTFC545rHh6t1rLC46GlX1b2rm8s5lzX49JmzFE4odcSiPafGZfQvnsHl2yVlLWM3kJg5DvVI4D0l5na3RUPTio4uz1gG9nML1u9ceHuj/yPb1097ZZfbCUsLSyRoeWvhhKuPxAM5mvGLZh641ArtVfRchNcdVZ1W4=)username: ENC(BcbIdbvEq4yN8kezH5mDjg==)password: ENC(Isk3pYM71258wxWTQOt3Dg==)db-name: ENC(CZcfw3ZJN6TVCVxkCW9Ey6z6iAuszHO8)filters: log4j,wall,mergeStat1

问:为什么要在数据源中添加ENC?
答:这个ENC相当于解密的标识符。

转载于:https://www.cnblogs.com/youcong/p/10422227.html

SpringBoot之加密相关推荐

  1. SpringBoot 配置文件加密的两种方式

    SpringBoot配置文件加密的两种方式 jasypt使用方式 用法一: 1.Application.java上增加注解@EnableEncryptableProperties(jasypt-spr ...

  2. springboot md5加密_SpringSecurity入门-SpringBoot集成SpringSecurity

    前言 至今Java能够如此的火爆Spring做出了很大的贡献,它的出现让Java程序的编写更为简单灵活,而Spring如今也形成了自己的生态圈,今天咱们探讨的是Spring旗下的一个款认证工具:Spr ...

  3. springboot md5加密_实在!基于Springboot和WebScoket,写了一个在线聊天小程序

    基于Springboot和WebScoket写的一个在线聊天小程序 (好几天没有写东西了,也没有去练手了,就看了看这个...) 项目说明 此项目为一个聊天的小demo,采用springboot+web ...

  4. SpringBoot配置文件加密

    文章目录 1 场景 2 加密方式 3 加密过程 3.1 maven依赖 3.2 配置加密密钥 3.2.1 开发环境 3.2.2 生产环境 3.3 加密 3.4 配置密文 1 场景 SpringBoot ...

  5. SpringBoot 接口加密解密,新姿势!

    我是 ABin-阿斌:写一生代码,创一世佳话,筑一览芳华.如果小伙伴们觉得不错就一键三连吧~ 声明:原文作者:微信公众号:方志朋 文章目录 1 . 介绍 2 . 前置知识 2.1 hutool-cry ...

  6. SpringBoot 接口加密解密,新姿势

    1. 介绍 在我们日常的Java开发中,免不了和其他系统的业务交互,或者微服务之间的接口调用 如果我们想保证数据传输的安全,对接口出参加密,入参解密. 但是不想写重复代码,我们可以提供一个通用star ...

  7. SpringBoot配置文件加密jasypt【数据库配置加密、redis配置加密、核心参数加密】

    为什么需要加密 这是一套完整的账号信息管理体系,不同岗位不同职责,也就是承担不同的责任. 比如在小程序开发过程中,很多公司都会把 appId.appSecret 直接赔偿成明文的,当有员工离职时很难进 ...

  8. SpringBoot项目加密数据库密码

    真实的项目开发中,数据库的密码不可能以明文方式写在配置文件中,一般都是经过加密的: 今天,主要介绍用Driver来对数据库的密码进行加密. alibaba druid加解密规则: 明文密码+私钥(pr ...

  9. 使用Jasypt对SpringBoot配置文件加密(数据源为SpringBoot默认的数据源HikariDataSource)

    目录 一.引入jar包依赖(pom.xml) 二.可以写个main函数,写一个用于生成用户名和密码的类,如下: 三.在配置文件(.yml或者.properties文件中) 四.启动时候常出现的问题以及 ...

最新文章

  1. EXECL导入(检查服务器版本.包括NPOI方式导入.可以通过配置文件信息导入EXECL)代码记录下....
  2. verilog中如何拆分一个数
  3. 百度痞哥:百度贴吧的回帖为什么没做点赞功能?
  4. poj 2057 树形DP,数学期望
  5. Verilog 补码加法溢出判断及处理
  6. antd 能自适应吗_一种能自适应识别母线运行方式的备自投装置应用探讨
  7. 【小程序】【Tips】【实践】Json 的对象 和 Json字符串 的区别和转换
  8. 格式化字符串,不足补零
  9. oracle命中率sql语句
  10. 【科普】女人的胸,到底有多少种形状?
  11. 电子工程师名片——FAT16文件系统(转)
  12. 【网络流24题】餐巾计划问题(费用流)
  13. Anaconda各版本对应的python版本
  14. 2021.09.22数字货币小计
  15. 使用jxls模板解析导出数据时添加单元格样式
  16. html的富文本有什么用,html中怎样使用富文本
  17. 三进制计算机可以实现吗,制造三进制计算机的一种方法技术
  18. js:ajax的get方法实现简单的搜索框提示
  19. 十分钟教你写个软件防火墙!powershell。
  20. 云计算的定义和特点是什么?

热门文章

  1. Cuil搜尋引擎 挑戰Google
  2. 易语言 图片插入超级列表框_新手教程!如何在PDF文件中插入图像
  3. 计算机的击键方法教学教案,初中七年级信息技术上册教案:键盘操作与练习
  4. Windows 10 打印机驱动无法删除和卸载的解决办法
  5. python求和函数1-n_python 用for循环实现1~n求和的实例
  6. csu1335 高桥与低桥
  7. thinkpad E430 电源连接未充电的问题解决方法
  8. 实时时钟模块RX-8010SJ
  9. 计算机语言中nl,这个nl_NL语言环境中的日期时间模式是什么?
  10. VScode Extension activation failed的解决方法