当前位置: 首页 > news >正文

方一凡和磊儿做家教的网站国内知名室内设计公司

方一凡和磊儿做家教的网站,国内知名室内设计公司,致设计,公共资源交易中心级别在我们的服务中不可避免的需要使用到一些秘钥#xff08;数据库、redis等#xff09;#xff1b;使用过SpringBoot配置文件的朋友都知道#xff0c;资源文件中的内容通常情况下是明文显示#xff0c;安全性就比较低一些。打开application.properties或application.yml数据库、redis等使用过SpringBoot配置文件的朋友都知道资源文件中的内容通常情况下是明文显示安全性就比较低一些。打开application.properties或application.yml比如mysql登陆密码redis登陆密码以及第三方的密钥等等一览无余这里介绍一个加解密组件提高一些属性配置的安全性。 开发和测试环境还好但生产如果采用明文配置讲会有安全问题jasypt是一个通用的加解密库我们可以使用它。 dependencygroupIdcom.github.ulisesbocchio/groupIdartifactIdjasypt-spring-boot-starter/artifactIdversion2.1.1/version /dependency配置文件 # 加密的密钥 # 测试环境可以采用在配置文件中配置 # 生产环境建议采用启动参数的形式传入 # 其他配置参数参考:com.ulisesbocchio.jasyptspringboot.properties.JasyptEncryptorConfigurationProperties jasypt.encryptor.passwordyou salt# 解密得到原始密码 spring.datasource.password ENC(密文)那密文怎么来的呢 Autowired StringEncryptor stringEncryptor;Test public void encrypt() {System.out.println(PWD: stringEncryptor.encrypt(yourpassword)); }public static void main(String[] args) {BasicTextEncryptor textEncryptor new BasicTextEncryptor();//加密所需的salt(盐)textEncryptor.setPassword(G0CvDz7oJn6);//要加密的数据数据库的用户名或密码String username textEncryptor.encrypt(root);String password textEncryptor.encrypt(root123);System.out.println(username:username);System.out.println(password:password);}jasypt默认使用StringEncryptor来进行加解密我们也可以自定义自己的加解密类来替换它。 再来详细介绍一下 jasypt由一个国外大神写的一个springboot下的工具包。Git地址https://github.com/ulisesbocchio/jasypt-spring-boot 直接上代码 1、pom文件中增加依赖 dependencygroupIdcom.github.ulisesbocchio/groupIdartifactIdjasypt-spring-boot-starter/artifactIdversion2.1.1/version /dependency2、application.yml文件中增加jasypt的秘钥(该秘钥自定义的) jasypt:encryptor:#加密秘钥password: EbfYkitulv73I2p0mXI50JMXoaxZTKJ73、测试类 RestController public class IndexController {Autowiredprivate StringEncryptor encryptor;/*** 测试jasypt加密解密*/GetMapping(/jasypt)public void testJasypt() {String password 123456;String encryptPwd encryptor.encrypt(password);System.out.println(加密: encryptPwd);System.out.println(解密 encryptor.decrypt(encryptPwd));}}4、启动服务在控制台可以看到jaspyt的默认配置(比如加密方式是PBEWithMD5AndDES) 5、在浏览器请求(端口号自定义)http://localhost:18081/jasypt 在控制台打印信息 加密: stqvirrvG8TcLz9mqflBDQ 解密123456jasypt由于其使用的是PBEWithMD5AndDES加密方式所以每次加密出来的结果都不一样但是解密都是一样的所以很适合对数据进行加密 6、将加密的结果替换配置文件中的敏感字段(这里以数据库密码为例数据库密码是123456) spring:application:name: service-providerdatasource: driver-class-name: com.mysql.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSourceurl: jdbc:mysql://localhost:3306/mydb?autoReconnecttruefailOverReadOnlyfalsecreateDatabaseIfNotExisttrueuseSSLfalseuseUnicodetruecharacterEncodingutf8username: rootpassword: ENC(stqvirrvG8TcLz9mqflBDQ)上面的 ENC()是固定写法()里面是加密后的信息。 7、在测试类中增加代码 Value(${spring.datasource.password})private String dbPassword; // 数据库密码/*** 测试配置文件字段加密后项目中该字段的值*/GetMapping(/password)public String password() {return dbPassword;} 请求http://localhost:18081/password会发现结果是123456说明直接将加密文件解密出来了 扩展 a、自定义上面第6点中ENC()的固定写法。在配置文件中增加jasypt.encryptor.property jasypt:encryptor:#加解密秘钥password: EbfYkitulv73I2p0mXI50JMXoaxZTKJ7#设置前缀后缀property:prefix: ENC[suffix: ] b、将加解密秘钥放在配置文件中是不安全的有如下几种解决办法 1、在启动类上赋值秘钥 SpringBootApplication public class ProviderApplication {public static void main(String[] args) {/** 配置加解密秘钥与配置文件的密文分开放 */System.setProperty(jasypt.encryptor.password, travel-app); // System.setProperty(jasypt.encryptor.password, EbfYkitulv73I2p0mXI50JMXoaxZTKJ7);SpringApplication.run(ProviderApplication.class, args);}}2、自定义StringEncryptor /*** 配置StringEncryptor*/Bean(jasyptStringEncryptor)public StringEncryptor stringEncryptor() {PooledPBEStringEncryptor encryptor new PooledPBEStringEncryptor();SimpleStringPBEConfig config new SimpleStringPBEConfig();config.setPassword(EbfYkitulv73I2p0mXI50JMXoaxZTKJ7);config.setAlgorithm(PBEWithMD5AndDES);config.setKeyObtentionIterations(1000);config.setPoolSize(1);config.setProviderName(SunJCE);config.setSaltGeneratorClassName(org.jasypt.salt.RandomSaltGenerator);config.setIvGeneratorClassName(org.jasypt.salt.NoOpIVGenerator);config.setStringOutputType(base64);encryptor.setConfig(config);return encryptor;}踩过的坑 a、必须配置加解密用的秘钥即jasypt.encryptor.password不然启动会报错 b、springboot2.x以下的版本只能用jasypt1.x的版本。如果用jasypt2.x的版本启动会报错详见https://github.com/ulisesbocchio/jasypt-spring-boot/issues/97
http://www.pierceye.com/news/395256/

相关文章:

  • 郑州网站建设蝶动2023年专升本最新政策
  • 江苏网站推广网络企业宣传画册设计公司
  • 沈阳设计网站公司哪家好个人养老保险怎么交费
  • 烟台seo网站推广如何给自己公司设计logo
  • wordpress 图片大小设置梧州网站优化公司
  • 360推广 网站建设豫建设标去哪个网站
  • 职高网站建设知识点国家免费技能培训有哪些
  • 哪个网站有帮忙做公开课课件怎么查那些人输入做网站
  • 怎么做qq钓鱼网站吗有哪些站内推广的方式
  • wap手机网站建设校园论坛网站怎么做
  • 北京专业网站的建设滨州做网站的
  • 网站点击排名wordpress 联系我们
  • 上街免费网站建设seo外包公司优化
  • 营销型网站的三大特点安徽网站设计方案
  • 优化网站推广教程排名做微信公众号页面的网站
  • 龙岗网站设计效果台州百度关键词排名
  • 政务类网站建设ps做全屏网站画布要多大
  • 百度广告搜索推广seo如何快速排名百度首页
  • 网站调用微信数据网站开发语言windows
  • 网站建设的公青岛专业网站制作设计
  • 东莞营销型网站学动漫设计有前途吗
  • 资讯网站wordpress实例配置
  • 营销网站建设哪里便宜最新房地产新闻
  • 有自己的网站怎么做淘宝客wordpress不自动安装
  • 我自己做网站wcf网站开发
  • 做一个好的网站需要什么店铺设计合同
  • 做网站公司郑州设计师能做网站前端吗
  • 建设工程交易中心网站中国监察报电子版
  • 网站正在建设中 倒计时软文写作范例大全
  • 左中右三栏布局网站建设网站建设微金手指下拉15