成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

Spring數據源及配置文件數據加密實現過程詳解

瀏覽:176日期:2023-09-06 14:32:21

The following example shows the corresponding XML configuration:

<bean class='org.springframework.jdbc.datasource.DriverManagerDataSource'> <property name='driverClassName' value='${jdbc.driverClassName}'/> <property name='url' value='${jdbc.url}'/> <property name='username' value='${jdbc.username}'/> <property name='password' value='${jdbc.password}'/></bean><context:property-placeholder location='jdbc.properties'/>

Spring在第三方依賴包中包含了兩個數據源的實現類包,其一是:Apache的DBCP;其二是C3P0,可以在Spring配置文件中利用二者的任何一個配置數據源.

The next two examples show the basic connectivity and configuration for DBCP and C3P0. To learn about more options that help control the pooling features, see the product documentation for the respective connection pooling implementations.

The following example shows DBCP configuration:

<bean destroy-method='close'> <property name='driverClassName' value='${jdbc.driverClassName}'/> <property name='url' value='${jdbc.url}'/> <property name='username' value='${jdbc.username}'/> <property name='password' value='${jdbc.password}'/></bean><context:property-placeholder location='jdbc.properties'/>

The following example shows C3P0 configuration:

<bean destroy-method='close'> <property name='driverClass' value='${jdbc.driverClassName}'/> <property name='jdbcUrl' value='${jdbc.url}'/> <property name='user' value='${jdbc.username}'/> <property name='password' value='${jdbc.password}'/></bean><context:property-placeholder location='jdbc.properties'/>

在jdbc.properties文件中定義屬性的值,如下:

jdbc.driverClassName=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3309/sampledb

jdbc.username=root

jdbc.password=123456

但是這些屬性是以明文形式存放,那么任何擁有服務器登錄權限的人都可以查看這些機密信息,容易造成數據庫訪問權限的泄露.

這就要求對應用程序配置文件對某些屬性進行加密,讓Spring容器在讀取屬性文件后,在內存中對屬性進行解密,然后再將解密后的屬性賦給目標對象.

這里提供一個加密解密工具(DES對稱加密解密)代碼:

package com.springboot.utils;import java.security.Key;import java.security.SecureRandom;import java.util.Base64;import java.util.Base64.Decoder;import java.util.Base64.Encoder;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;public class DESUtils { //指定DES加密解密所用的密鑰 private static Key key; private static String KEY_STR = 'myKey'; static { try { KeyGenerator generator = KeyGenerator.getInstance('DES'); generator.init(new SecureRandom(KEY_STR.getBytes())); key = generator.generateKey(); generator = null; }catch(Exception e) { throw new RuntimeException(e); } } public static String getEncryptString(String str) { Encoder encoder = Base64.getEncoder(); try { byte[] strBytes = str.getBytes('UTF8'); Cipher cipher = Cipher.getInstance('DES'); cipher.init(Cipher.ENCRYPT_MODE, key); byte[] encryptStrBytes = cipher.doFinal(strBytes); return encoder.encodeToString(encryptStrBytes); }catch(Exception e) { throw new RuntimeException(e); } } public static String getDecryptString(String str) { Decoder decoder = Base64.getDecoder(); try { byte[] strBytes = decoder.decode(str); Cipher cipher = Cipher.getInstance('DES'); cipher.init(Cipher.DECRYPT_MODE, key); byte[] decryptStrBytes = cipher.doFinal(strBytes); return new String(decryptStrBytes,'UTF8'); }catch(Exception e) { throw new RuntimeException(e); } } public static void main(String[] args) throws Exception{ if(args == null || args.length < 1) { System.out.println('請輸入要加密的字符,用空格分隔.'); }else { for(String arg : args) {System.out.println(arg + ':' + getEncryptString(arg)); } } }}

針對配置文件中加密信息的解密

package com.springboot.utils;import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;public class EncryptPropertyPlaceholderConfigurer extends PropertySourcesPlaceholderConfigurer{ private String[] encryptPropNames = {'userName','password'}; private boolean isEncryptProp(String propertyName) { for(String encryptProName : encryptPropNames) { if(encryptProName.equals(propertyName)) {return true; } } return false; } @Override protected String convertProperty(String propertyName, String propertyValue) { if(isEncryptProp(propertyName)) { String decryptVal = DESUtils.getDecryptString(propertyValue); System.out.println('decryptVal = ' + decryptVal); return decryptVal; }else { return propertyValue; } }}

xml配置文件內容

<?xml version='1.0' encoding='UTF-8'?><beans xmlns='http://www.springframework.org/schema/beans' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:p='http://www.springframework.org/schema/p' xmlns:util='http://www.springframework.org/schema/util' xmlns:aop='http://www.springframework.org/schema/aop' xmlns:context='http://www.springframework.org/schema/context' xmlns:tx='http://www.springframework.org/schema/tx' xsi:schemaLocation=' http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx https://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd'> <bean p:location='classpath:application.properties' p:fileEncoding='utf-8'/> <beandestroy-method='close' p:driverClassName='${driverClassName}' p:url='${url}' p:username='${userName}' p:password='${password}'/></beans>

通過在控制臺運行我們的加密代碼獲取加密后的密文

yusuwudeMacBook-Pro:classes yusuwu$ java com.springboot.utils.DESUtils root 123

獲取密文:

root:jxlNoW/DjKw=

123:RbtzyNE4tjY=

在application.properties中配置

driverClassName=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/springbootuserName=jxlNoW/DjKw=password=RbtzyNE4tjY=

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
成人免费的视频| 欧美日韩亚洲一区二区三区四区| 玉米视频成人免费看| 欧美激情一二三区| 精品国产一区久久| 欧美性欧美巨大黑白大战| 久久久综合香蕉尹人综合网| 亚洲一区欧美激情| 亚洲欧美日本国产专区一区| 国产精品一区毛片| 久久三级视频| 欧美亚洲国产一区二区三区va| 色一情一乱一乱一91av| 色哟哟在线观看一区二区三区| 在线精品视频免费播放| 欧美日韩中文字幕一区| 欧美精品久久久久久久多人混战 | 色系网站成人免费| 欧洲激情一区二区| 欧美一二三四区在线| 日韩亚洲电影在线| 国产欧美中文在线| 亚洲一区在线观看视频| 日韩高清中文字幕一区| 久久99九九99精品| 国产成人av一区| 99热99精品| 亚洲国产日韩欧美| 色妹子一区二区| 制服丝袜成人动漫| 久久精品人人做人人综合 | 日日噜噜夜夜狠狠视频欧美人| 蜜臀av一级做a爰片久久| 国产成人午夜99999| 好吊日精品视频| 色欧美88888久久久久久影院| 制服.丝袜.亚洲.中文.综合| 久久蜜桃av一区精品变态类天堂| 亚洲特级片在线| 日日摸夜夜添夜夜添国产精品| 国产又黄又大久久| 欧美日韩一区二区三区在线观看免 | 亚洲成人免费视| 成人性生交大片免费看中文 | 亚洲欧美网站| 欧美一区二区久久久| 国产精品白丝在线| 久久精品国产在热久久| 欧美fxxxxxx另类| 久久婷婷麻豆| 久久久久亚洲蜜桃| 五月天亚洲精品| 97久久精品人人做人人爽50路| 国产精品普通话对白| 欧美一区二区三区在线观看| 一区二区三区精密机械公司| 成人在线综合网站| 一区二区三区四区国产| 欧美一区二区三区四区五区| 亚洲美女少妇撒尿| 懂色av一区二区三区免费观看| 国产精品国产三级国产普通话三级| 久久综合图片| 老牛影视一区二区三区| 日韩女同互慰一区二区| 亚洲综合网站在线观看| 国产成人夜色高潮福利影视| 亚洲专区一区二区三区| 精品欧美一区二区三区精品久久 | 亚洲欧美色一区| 国产一区999| 国产一区二区三区久久久久久久久| 久久午夜免费电影| 激情综合五月天| 久久久三级国产网站| 欧美激情中文字幕| 久久99久久精品欧美| 午夜视频一区| 欧美成人bangbros| 日本不卡视频在线观看| 亚洲精品乱码视频| 国产精品久久久久久久久久免费看| 国产乱人伦偷精品视频不卡| 91久久一区二区| 亚洲一二三级电影| 亚洲黑丝一区二区| 国产精品人成在线观看免费| 成人黄色国产精品网站大全在线免费观看 | 中文成人av在线| aaa欧美日韩| 成人av在线资源网站| 欧日韩精品视频| 日本午夜精品视频在线观看| 先锋影音久久| 一区二区三区日韩欧美精品| 亚洲精品看片| 亚洲精品国产无天堂网2021| 91久久亚洲| 亚洲色图制服丝袜| 影音先锋在线一区| 国产精品无遮挡| 国产精品国色综合久久| 国产精品天干天干在线综合| 欧美一区国产在线| 国产无遮挡一区二区三区毛片日本| av一区二区三区黑人| 亚洲精品在线免费播放| 91免费视频网| 国产精品天干天干在观线| 国户精品久久久久久久久久久不卡| 国产日本欧美一区二区| 激情一区二区| 玉米视频成人免费看| 久久久久久网| 国内成+人亚洲+欧美+综合在线| 91精品国产入口在线| 99热国产精品| 自拍偷自拍亚洲精品播放| 在线视频亚洲| 免费在线观看一区二区三区| 欧美日韩色综合| 高清久久久久久| 国产欧美综合在线观看第十页| 亚洲国产片色| 免费人成精品欧美精品| 宅男在线国产精品| 欧美成人一品| 亚洲在线视频免费观看| 欧美性色黄大片手机版| 成人免费高清在线| 亚洲视频综合在线| 一本色道久久综合亚洲精品按摩| 激情综合色综合久久| 精品日韩在线观看| 亚洲电影av| 国内久久精品视频| 国产精品久久久久三级| 久久久蜜桃精品| 黄色免费成人| 麻豆成人91精品二区三区| 精品国产a毛片| 在线亚洲免费| 国产盗摄一区二区| 亚洲三级电影网站| 欧美二区乱c少妇| 午夜在线一区二区| 国产日韩1区| 麻豆一区二区三区| 精品国产一区二区三区久久影院| 91久久夜色精品国产九色| 久久国产福利国产秒拍| 中文字幕巨乱亚洲| 欧美亚洲一区二区在线| 欧美精品国产一区二区| 蜜桃视频一区二区三区| 国产欧美日本一区视频| 欧美日韩精品欧美日韩精品一| 欧美日韩免费观看一区=区三区| 免费黄网站欧美| 亚洲国产精品ⅴa在线观看| 欧美在线你懂得| 永久域名在线精品| 成人亚洲精品久久久久软件| 亚洲福利一区二区| 国产无一区二区| 欧美肥胖老妇做爰| 国产视频一区三区| 你懂的国产精品永久在线| 麻豆91在线看| 日本三级韩国三级欧美三级| 久久综合成人精品亚洲另类欧美| 色婷婷av一区二区三区软件| 国产在线一区二区三区四区| 国产成人精品亚洲777人妖| 喷白浆一区二区| 一区二区三区免费| 日本一区二区三区四区在线视频| 欧美日韩综合在线免费观看| 国产精品一区亚洲| 伊人精品视频| 欧美xx69| 成人av网址在线| 国产精品亚洲视频| 久久成人羞羞网站| 石原莉奈在线亚洲三区| 亚洲私人影院在线观看| 欧美高清在线视频| 久久久精品免费免费| 欧美一二区视频| 6080日韩午夜伦伦午夜伦| 欧美日韩视频在线第一区| 色女孩综合影院| 久久久久高清| 久久经典综合| 免费一级欧美片在线播放| 99www免费人成精品| 欧美日韩国产成人精品| 91丨九色丨蝌蚪丨老版| 99久久国产综合精品色伊| 国产成人av福利|