日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

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

瀏覽:202日期: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
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
黑丝一区二区三区| 国产精品美女久久久| 啪啪国产精品| 国产精品久久乐| 亚洲一区二区三区四区五区午夜| 最新中文字幕在线播放| 欧美在线黄色| 免费看欧美美女黄的网站| 综合国产视频| 欧美资源在线| 亚洲综合电影| 久久国产日韩| 久久国产成人| 97久久超碰| 国产精品三p一区二区| 欧美国产另类| 91综合视频| 99久久亚洲精品蜜臀| 99免费精品| 视频一区中文字幕国产| 91九色综合| 国产中文字幕一区二区三区| 久久精品亚洲人成影院| 免费日韩精品中文字幕视频在线| 亚洲精品一二三**| 亚洲欧美日韩专区| 91成人在线精品视频| 国产成人免费av一区二区午夜| 日本综合字幕| 中文精品在线| 欧美日本二区| 欧美日韩尤物久久| 亚洲专区视频| 六月丁香综合在线视频| 欧美成a人免费观看久久| 中国女人久久久| 国产精品亲子伦av一区二区三区| 国产成人调教视频在线观看| 亚洲精品99| 国产精品蜜月aⅴ在线| 久久久夜精品| 免播放器亚洲| 麻豆精品蜜桃视频网站| 国产精品99一区二区| 亚洲18在线| 国产精品专区免费| 亚洲1区在线观看| 亚洲啊v在线| 亚洲精品一二| 亚洲精品在线影院| 日韩在线麻豆| 国产成人免费| 亚洲人亚洲人色久| 亚洲啊v在线| 日韩精品久久理论片| 色乱码一区二区三区网站| 乱人伦精品视频在线观看| 精品国产欧美日韩| 一区二区91| 日本免费久久| 日本a口亚洲| 欧美精选一区二区三区| 国产精品免费精品自在线观看| 激情综合在线| 麻豆成人在线观看| 中文字幕亚洲精品乱码| 欧美精品日日操| 91精品视频一区二区| 免费视频一区三区| 久久精品免视看国产成人| 中文久久精品| 国产一区二区三区日韩精品| 亚洲ww精品| 久久精品国产68国产精品亚洲| 国产精选久久| 亚洲久久一区| 亚洲国产专区| 精品视频网站| 亚洲69av| 九九综合九九| 在线手机中文字幕| 国产调教精品| 一区免费视频| 中文字幕系列一区| 欧美91在线| 亚州欧美在线| 中文精品在线| 欧美亚洲国产激情| 精品精品99| 国产日本精品| aa国产精品| 日韩在线中文| 久久精品毛片| 国产九九精品| 亚洲人成网77777色在线播放| 日本精品不卡| 久久影院资源站| 青草久久视频| 亚洲综合激情在线| 午夜在线播放视频欧美| 欧美男人天堂| 麻豆久久久久久| 国产日韩一区| 日韩精品五月天| 天堂av在线一区| 欧美日韩国产免费观看视频| av资源亚洲| 91视频精品| 国产一区二区三区不卡视频网站| 国产乱子精品一区二区在线观看 | 国产欧美日韩一区二区三区四区 | 99精品网站| 日韩在线看片| 亚洲一级少妇| 欧洲亚洲一区二区三区| 日韩在线短视频| 日韩精品看片| 桃色一区二区| 国产成人精品一区二区三区视频| 国产欧美一级| 欧美国产另类| 精品国产亚洲日本| 欧美国产先锋| 麻豆精品视频在线观看免费| 国产精品美女午夜爽爽| 国产精品久久| 免费一区二区三区在线视频| 国产精品美女午夜爽爽| 美腿丝袜亚洲三区| 美女国产一区二区三区| 麻豆一区二区在线| 高清日韩欧美| 午夜久久中文| 97国产成人高清在线观看| 国产成人在线中文字幕| 日韩国产综合| 秋霞国产精品| 欧美精品一线| 中文一区一区三区免费在线观 | 91精品啪在线观看国产18 | 欧美日韩视频网站| 国产资源在线观看入口av| 亚洲国产成人二区| 精品捆绑调教一区二区三区 | 婷婷综合六月| 欧美日韩水蜜桃| 日韩一区二区免费看| 蜜桃视频在线观看一区二区| 日本在线视频一区二区| 国产欧美日韩一区二区三区四区| 久久av日韩| 日韩国产一区二区| 精品欧美激情在线观看| 日韩精品一级二级| 欧美日韩18| 久久中文在线| 久久中文视频| 亚洲精品日本| 精品黄色一级片| 激情久久婷婷| 在线视频亚洲欧美中文| 欧美一级网站| 天堂中文在线播放| 国产精品色网| 日本欧美一区二区| 精品免费在线| 欧美99久久| 亚洲欧美专区| 久久久国产精品网站| 天堂日韩电影| 日韩一级网站| 国产精品亲子伦av一区二区三区| 成人片免费看| 蜜臀av一区二区三区| 国产激情精品一区二区三区| 久久亚洲国产| 青青国产精品| 国产超碰精品| 亚洲精品激情| 欧美日韩国产观看视频| 蜜桃视频一区二区三区| 免费在线亚洲| 国产一级一区二区| 国产精品一区毛片| 久久中文视频| 日韩av网站在线观看| 日韩成人精品一区二区| 亚洲一区二区毛片| 精品国产美女a久久9999| 免费视频久久| 岛国av在线网站| 午夜精品影视国产一区在线麻豆| 精品久久91| 亚洲日韩中文字幕一区| www.51av欧美视频| 亚洲精选91| 久久久久99| 久久99蜜桃| 亚洲欧洲日韩| 亚洲午夜在线|