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

贵阳网站建设搜王道下拉重庆seo网络推广关键词

贵阳网站建设搜王道下拉,重庆seo网络推广关键词,行业网站制作,张家界建设局网站电话environment中的value为什么要加密? 未经过加密的配置文件,密码均是采用明文密码,很容易导致信息泄露。 SpringBoot environment中的value加密代码如下 package com.xxx.core.encryption;import com.google.common.collect.Maps; import lomb…

environment中的value为什么要加密?

未经过加密的配置文件,密码均是采用明文密码,很容易导致信息泄露。

SpringBoot environment中的value加密代码如下


package com.xxx.core.encryption;import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.boot.env.OriginTrackedMapPropertySource;
import org.springframework.boot.origin.OriginTrackedValue;
import org.springframework.core.Ordered;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.MutablePropertySources;
import org.springframework.core.env.PropertySource;import java.util.Map;/*** @author HanKeQi* @date 2023/9/4*/
@Slf4j
public class EnableEncryptionData implements BeanFactoryPostProcessor, Ordered {private final ConfigurableEnvironment environment;//根据自己需求自定义private static final String PREFIX = "ENC(";private static final String SUFFIX = ")";/*** 扫描自定义配置的文件*/private static final String BOOTSTRAP_CONFIGURE = "bootstrap";public EnableEncryptionData(ConfigurableEnvironment environment) {this.environment = environment;}@Overridepublic void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException {MutablePropertySources propertySources = environment.getPropertySources();for (PropertySource<?> propertySource: propertySources){if (propertySource instanceof OriginTrackedMapPropertySource){OriginTrackedMapPropertySource originTrackedMapPropertySource = (OriginTrackedMapPropertySource) propertySource;String activeName = originTrackedMapPropertySource.getName();Map<String, Object> activeSource = (Map<String, Object>)propertySources.get(activeName).getSource();Map<String, Object> newConfigMap = Maps.newHashMap();activeSource.forEach((k,v)->{if (v instanceof OriginTrackedValue){Object valueObj = ((OriginTrackedValue) v).getValue();if (valueObj instanceof String){String valueEncryptionStr = (String) valueObj;if (!StringUtils.isEmpty(valueEncryptionStr) && valueEncryptionStr.startsWith(PREFIX) && valueEncryptionStr.endsWith(SUFFIX)){try {valueEncryptionStr = getEncryptionStr(valueEncryptionStr);valueEncryptionStr = AesUtils.decodeStr(valueEncryptionStr, AesUtils.P_KEY);newConfigMap.put(k, valueEncryptionStr);return;}catch (Exception e){e.printStackTrace();}}}}newConfigMap.put(k, v);});propertySources.replace(activeName, new OriginTrackedMapPropertySource(activeName , newConfigMap, true));}}}@Overridepublic int getOrder() {return Ordered.LOWEST_PRECEDENCE - 100;}/*** 获取加密后的信息* @param encryptionStr* @return*/private static String getEncryptionStr(String encryptionStr){encryptionStr = encryptionStr.substring(PREFIX.length());encryptionStr = encryptionStr.substring(0, encryptionStr.length()-SUFFIX.length());return encryptionStr;}
}

springboot 配置Configuration

package com.xxx.core.encryption;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.ConfigurableEnvironment;/*** @author HanKeQi* @date 2022/10/30*/
@Configuration
public class EnvironmentConfig {@Beanpublic static EnableEncryptionData enableEncryptionData(final ConfigurableEnvironment environment) {return new EnableEncryptionData(environment);}
}

Aes加密代码

package com.xxx.util.encrypt;import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.util.Arrays;/*** @author HanKeQi* @date 2022/10/30*/
@Slf4j
public class AesUtils {public static final String IV = "vKapxbKpyptKkwuP";private static final String P_KCS5_PADDING="AES/CBC/PKCS5Padding";private static final String KEY = "AES";public static final String P_KEY = "6U7Si019ireqa7vAscWBkbPClOYtn6gb";/*** @param content base64处理过的字符串* @param pkey    密匙* @return String    返回类型* @throws Exception* @throws* @Title: aesDecodeStr* @Description: 解密 失败将返回NULL*/public static String decodeStr(String content, String pkey) throws Exception {try {log.info("待解密内容: {}", content);byte[] base64DecodeStr = Base64.decodeBase64(content);byte[] aesDecode = decode(base64DecodeStr, pkey);if (aesDecode == null) {return null;}String result;result = new String(aesDecode, "UTF-8");return result;} catch (Exception e) {throw new Exception("解密异常");}}/*** 解密 128位** @param content 解密前的byte数组* @param pkey    密匙* @return result  解密后的byte数组* @throws Exception*/public static byte[] decode(byte[] content, String pkey,String IV) throws Exception {SecretKeySpec skey = new SecretKeySpec(pkey.getBytes(),  KEY);IvParameterSpec iv = new IvParameterSpec(IV.getBytes("UTF-8"));//创建密码器Cipher cipher = Cipher.getInstance(P_KCS5_PADDING);//初始化解密器cipher.init(Cipher.DECRYPT_MODE, skey, iv);byte[] result = cipher.doFinal(content);// 解密return result;}public static byte[] decode(byte[] content, String pkey) throws Exception {return decode(content,pkey,IV);}/*** @param content 加密前原内容* @param pkey    长度为16个字符,128位* @return base64EncodeStr   aes加密完成后内容* @throws* @Title: aesEncryptStr* @Description: aes对称加密*/public static String encryptStr(String content, String pkey) {byte[] aesEncrypt = encrypt(content, pkey);String base64EncodeStr = Base64.encodeBase64String(aesEncrypt);return base64EncodeStr;}/*** 加密 128位** @param content 需要加密的原内容* @param pkey    密匙* @return*/public static byte[] encrypt(String content, String pkey, String iv) {try {//SecretKey secretKey = generateKey(pkey);//byte[] enCodeFormat = secretKey.getEncoded();SecretKeySpec skey = new SecretKeySpec(pkey.getBytes(), KEY);Cipher cipher = Cipher.getInstance(P_KCS5_PADDING);// "算法/加密/填充"IvParameterSpec ivParameterSpec = new IvParameterSpec(iv.getBytes());cipher.init(Cipher.ENCRYPT_MODE, skey, ivParameterSpec);//初始化加密器byte[] encrypted = cipher.doFinal(content.getBytes("UTF-8"));return encrypted; // 加密} catch (Exception e) {log.info("encrypt() method error:", e);}return null;}public static byte[] encrypt(String content, String pkey) {return encrypt(content,pkey, IV);}}

配置文件

spring:redis:database: 1host: redis.commons.svc.cluster.localport: 6379# 使用了 AesUtils.encryptStr("ADoZH2Gw6KEw51c3Mk", P_KEY);password: ENC(hji+7pHQpX0f0/dVncyT/leJ6sWHiCUlFq7LdDJjo1s=)
http://www.hkea.cn/news/73985/

相关文章:

  • 大型 网站的建设 阶段百度官方网站下载
  • 江苏专业做网站的公司百度地图导航网页版
  • 怎么去投诉做网站的公司宁波seo外包推广软件
  • 网络营销跟做网站有什么区别线上推广如何引流
  • 如何进行网店推广seo排名优化怎样
  • 什么建站程序好收录上海网络公司seo
  • 电子商务网站建设投资预算小程序平台
  • 广州外贸营销型网站成都移动seo
  • 如何韩国视频网站模板下载 迅雷下载sem竞价托管费用
  • 做网站去哪个平台seo培训学院
  • 网站移动端优化的重点有哪些营销策略ppt
  • 养车网站开发搜狗seo快速排名公司
  • 企业电子商务网站建设武汉百度快速排名提升
  • 建一个网站的流程今天刚刚发生的新闻
  • 建立网站请示优化服务是什么意思
  • 有一个做场景动画的网站山东seo费用多少
  • 阿里云服务器的网站备案流程图营销推广有哪些形式
  • 做宣传用什么网站好手游推广平台有哪些
  • 免费全国网站在线客服软件新手电商运营从哪开始学
  • 0317网站建设怎么建个网站
  • 做网站做电脑版还是手机版好电话营销
  • 深圳网站建设 设计搜索引擎的工作原理是什么?
  • 在线网站设计百度收录查询方法
  • 最新体育新闻足球百度seo收费
  • 手机网站做跳转好吗个人在百度上发广告怎么发
  • 民宿网站的建设最近热搜新闻事件
  • 企业网站建设的核心是企业推广视频
  • 设计素材网站蜂产品推广文章
  • wordpress站点描述seo哪个软件好
  • 澳门服务器做网站需要备案吗百度ai人工智能平台