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

阿里巴巴建设网站首页佛山seo

阿里巴巴建设网站首页,佛山seo,网站资质证书,网站做多长时间才会成功前言 在一些安全性要求比较高的项目里,避免不了要对敏感信息进行加解密,比如配置文件中的敏感信息。 第一种方法(自定义加解密) 加解密工具类: public class SecurityTools {public static final String ALGORITHM…

前言

在一些安全性要求比较高的项目里,避免不了要对敏感信息进行加解密,比如配置文件中的敏感信息。

第一种方法(自定义加解密)

加解密工具类:

public class SecurityTools {public static final String ALGORITHM = "AES/ECB/PKCS5Padding"; //算法类型/***功能描述: 解密* @author zhouwenjie* @date 2023/3/9 16:49* @param req* @return org.hwdz.common.util.security.entity.SecurityResp*/public static SecurityResp valid(SecurityReq req) {SecurityResp resp=new SecurityResp();String pubKey=req.getPubKey();String aesKey=req.getAesKey();String data=req.getData();String signData=req.getSignData();RSA rsa=new RSA(null, Base64Decoder.decode(pubKey));Sign sign= new Sign(SignAlgorithm.SHA1withRSA,null,pubKey);byte[] decryptAes = rsa.decrypt(aesKey, KeyType.PublicKey);//log.info("rsa解密后的秘钥"+ Base64Encoder.encode(decryptAes));AES aes = SecureUtil.aes(decryptAes);String dencrptValue =aes.decryptStr(data);//log.info("解密后报文"+dencrptValue);resp.setData(dencrptValue);boolean verify = sign.verify(dencrptValue.getBytes(), Base64Decoder.decode(signData));resp.setSuccess(verify);return resp;}/***功能描述: 加密* @author zhouwenjie* @date 2023/3/9 16:49* @param req* @return org.hwdz.common.util.security.entity.SecuritySignResp*/public static SecuritySignResp sign(SecuritySignReq req) {SecretKey secretKey = SecureUtil.generateKey(ALGORITHM);byte[] key= secretKey.getEncoded();String prikey=req.getPrikey();String data=req.getData();AES aes = SecureUtil.aes(key);aes.getSecretKey().getEncoded();String encrptData =aes.encryptBase64(data);RSA rsa=new RSA(prikey,null);byte[] encryptAesKey = rsa.encrypt(secretKey.getEncoded(), KeyType.PrivateKey);//log.info(("rsa加密过的秘钥=="+Base64Encoder.encode(encryptAesKey));Sign sign= new Sign(SignAlgorithm.SHA1withRSA,prikey,null);byte[] signed = sign.sign(data.getBytes());//log.info(("签名数据===》》"+Base64Encoder.encode(signed));SecuritySignResp resp=new SecuritySignResp();resp.setAesKey(Base64Encoder.encode(encryptAesKey));resp.setData(encrptData);resp.setSignData(Base64Encoder.encode(signed));return resp;}/***功能描述: 生成公钥、密钥* @author zhouwenjie* @date 2023/3/9 16:49* @param * @return org.hwdz.common.util.security.entity.MyKeyPair*/public static MyKeyPair generateKeyPair(){KeyPair keyPair= SecureUtil.generateKeyPair(SignAlgorithm.SHA1withRSA.getValue(),2048);String priKey= Base64Encoder.encode(keyPair.getPrivate().getEncoded());String pubkey= Base64Encoder.encode(keyPair.getPublic().getEncoded());MyKeyPair resp=new MyKeyPair();resp.setPriKey(priKey);resp.setPubKey(pubkey);return resp;}
}

实体类:

@Data
public class MyKeyPair {private String priKey;private String pubKey;
}
@Data
public class SecurityReq {private String data;private String pubKey;private String signData;private String aesKey;
}
@Data
public class SecurityResp {private Boolean success;private String data;
}
@Data
public class SecuritySignReq {private String data;private String prikey;
}
@Data
public class SecuritySignResp {private String data;private String signData;private String aesKey;
}

使用:

//加密MyKeyPair myKeyPair = SecurityTools.generateKeyPair();System.out.println(myKeyPair);SecuritySignReq securitySignReq = new SecuritySignReq();securitySignReq.setData("qazQAZ123");securitySignReq.setPrikey(CommonConstant.priKey);SecuritySignResp sign = SecurityTools.sign(securitySignReq);System.out.println(sign);//解密SecurityReq securityReq = new SecurityReq();securityReq.setSignData(sign.getSignData());securityReq.setData(sign.getData());securityReq.setAesKey(sign.getAesKey());securityReq.setPubKey(CommonConstant.pubKey);SecurityResp valid = SecurityTools.valid(securityReq);System.out.println(valid);

第二种方法 (使用srpingboot druid)

使用srpingboot druid自带的方法

<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version>
</dependency>

工具类:

	/*** 使用Druid数据库密码加密配置* @param args*/public static void main(String[] args) {//加密try {String miwenofter = ConfigTools.encrypt("aaa");System.out.println("加密后"+miwenofter);} catch (Exception e) {e.printStackTrace();}//解密try {String mingwen = ConfigTools.decrypt("frL2qjh4LPrVaWZdzZkfVKDPgyrbfaEofNBMrk9fHoYE7KJ08RSQEjCS+9JMKe/w==");System.out.println("解密后:"+mingwen);} catch (Exception e) {e.printStackTrace();}}

配置文件:

server.port=8080
spring.datasource.druid.driverClassName=com.mysql.jdbc.Driver
spring.datasource.druid.url=jdbc:mysql://XXX:3306/vehicle?useSSL=false&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true
spring.datasource.druid.username=vehicle
#密码
spring.datasource.druid.password=通过测试类获取到加密后密码
spring.datasource.type: com.alibaba.druid.pool.DruidDataSource
# 初始化大小、最小、最大连接数
spring.datasource.druid.initial-size=3
spring.datasource.druid.min-idle=3
spring.datasource.druid.max-active=10
# 配置获取连接等待超时的时间
spring.datasource.druid.max-wait=60000
# 监控后台账号和密码
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=admin
# 配置 StatFilter
spring.datasource.druid.filter.stat.log-slow-sql=true
spring.datasource.druid.filter.stat.slow-sql-millis=2000
#数据库加密 这两步很重要 ***************
spring.datasource.druid.filters = config,wall,stat
spring.datasource.druid.connectionProperties=druid.stat.slowSqlMillis=200;druid.stat.logSlowSql=true;config.decrypt=true

注意,这里只适用druid配置的数据库信息,比如,配置文件有下边的配置,将druid配置排除在外就不可以。
在这里插入图片描述

第三种方法(常用,Jasypt实现数据加解密)

简介:不仅可以实现数据加解密,通过注解无感操作配置文件解密

1. 配置版本

mvn仓库选择对应版本
在这里插入图片描述
2. 集成项目
在启动类上添加注解:`@EnableEncryptableProperties``

在这里插入图片描述
3. yml配置
主要配置盐值、加密方法、编码形式,除了盐值(password),其他两项为默认值,如果没有特殊要求就用默认值即可。

在这里插入图片描述
提示:不配置盐值容易出现 must be provided for Password-based or Asymmetric encryption 错误!

4.使用加解密

在这里插入图片描述
之后将生成的加密串配置到对应的地方即可。
在这里插入图片描述
注意:记得加前缀和后缀ENC(),当然这个前后缀也是可以换成自己想要的
在这里插入图片描述

5.数据脱敏
也是加解密,只不过需要手动,在aop中,参考文章Jasypt实现数据加解密(脱敏)

6.完善细节
虽然上边的配置已经可以了,但是将加解密秘钥放在配置文件中是不安全的,也就是上边的盐值(password),所以我们可以放在代码里或者其地方,下边提供两种参考

  • 启动类加载

在这里插入图片描述

  • 配置文件
/*** 配置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;}
http://www.zhongyajixie.com/news/31130.html

相关文章:

  • 先做网站后台还是前台百度seo技术优化
  • 做网站可以申请专利吗百度seo多久能优化关键词
  • 短视频seo排名加盟网站优化软件费用
  • 旅游做攻略的网站有哪些seo快速排名优化方法
  • 大连网站建设#选领超科技长春网站制作设计
  • 网页设计与网站制作知识框架企业网站推广方案的策划
  • 湖南门户网站设计公司网站制作报价
  • 安徽免费网站制作线上产品推广方案
  • 网页制作与网站开发 实验报告宁德市医院
  • 北京网站建设方案报价如何推广网址链接
  • 爱站网站seo查询工具浙江疫情最新消息
  • 做网站最简单的工具今日舆情热点
  • 亳州是网站建设百度总部电话
  • 有公众号要不要做网站seo搜索排名优化
  • 网站建设带有注册账号百度搜索风云榜排行榜
  • 广州有做虚拟货币网站重庆高端seo
  • 制作网页和网站的区别漯河网站seo
  • 蓝田县住房与城乡建设局网站免费十大软件大全下载安装
  • 乌鲁木齐到贵阳专线百度关键词seo排名优化
  • 那几个网站可以做h5怎么把产品快速宣传并推广
  • 福步外贸官网网站怎么优化关键词
  • 钦州做网站的公司怎样建网站平台
  • 边个网站可以接模具做百度推广登录手机版
  • 电子商务网站架构重庆seo招聘
  • 做异地送花网站新东方厨师学费价目表
  • 做微信平台网站需要多少钱百度分析工具
  • 南宁公司网站建设珠海百度关键字优化
  • iis网站筛选器被挂马网站制作的流程
  • 什么是网站主题百度快照搜索引擎
  • 淮北网站制作大数据查询官网