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

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Spring數(shù)據(jù)源及配置文件數(shù)據(jù)加密實(shí)現(xiàn)過(guò)程詳解

瀏覽:205日期: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在第三方依賴包中包含了兩個(gè)數(shù)據(jù)源的實(shí)現(xiàn)類包,其一是:Apache的DBCP;其二是C3P0,可以在Spring配置文件中利用二者的任何一個(gè)配置數(shù)據(jù)源.

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

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

這就要求對(duì)應(yīng)用程序配置文件對(duì)某些屬性進(jìn)行加密,讓Spring容器在讀取屬性文件后,在內(nèi)存中對(duì)屬性進(jìn)行解密,然后再將解密后的屬性賦給目標(biāo)對(duì)象.

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

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('請(qǐng)輸入要加密的字符,用空格分隔.'); }else { for(String arg : args) {System.out.println(arg + ':' + getEncryptString(arg)); } } }}

針對(duì)配置文件中加密信息的解密

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配置文件內(nèi)容

<?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>

通過(guò)在控制臺(tái)運(yùn)行我們的加密代碼獲取加密后的密文

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=

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲高清不卡| 蜜桃视频欧美| 亚洲一区久久| 樱桃视频成人在线观看| 免费在线观看成人| 日韩网站在线| 亚洲欧美日韩综合国产aⅴ| 国产精品人人爽人人做我的可爱| 国内精品福利| 在线综合亚洲| 亚洲毛片在线免费| 日韩国产一二三区| 国产欧美一区二区三区米奇| 欧美一区自拍| 国产精品多人| 精品久久久网| 久久国产电影| 石原莉奈一区二区三区在线观看| 久久最新视频| 一区免费在线| 亚洲日产国产精品| 日韩不卡一区二区| 久久精品伊人| 日本激情一区| 中文字幕成在线观看| 婷婷精品视频| 亚洲三区欧美一区国产二区| 国产欧美亚洲精品a| 国产精品一线天粉嫩av| 日韩精品一二区| 欧美一区在线观看视频| 精品视频网站| 亚洲一级特黄| 一本一道久久a久久| 奇米亚洲欧美| 激情视频网站在线播放色| 亚洲午夜在线| 久久国产麻豆精品| 人人精品亚洲| 色综合视频一区二区三区日韩 | 成人久久一区| 亚洲主播在线| 国产精品99久久免费| 日韩大片在线| 蜜臀av性久久久久蜜臀aⅴ流畅| 亚洲一区二区三区四区电影| 国产精品欧美在线观看| 久久精品亚洲欧美日韩精品中文字幕| 性一交一乱一区二区洋洋av| 久久国产精品免费一区二区三区| 日韩成人三级| 午夜亚洲福利| 视频福利一区| 午夜精品福利影院| 日韩欧美字幕| 亚洲色图网站| 国产在线视频欧美一区| 丝袜美腿亚洲一区| 欧美精品成人| 午夜久久99| 日本成人在线不卡视频| 亚洲性色视频| 国产精品久久| 9色国产精品| 久久97视频| 男女精品网站| 中文在线а√天堂| 久久国产免费看| 九色精品91| 国产在线一区不卡| 亚洲精品黄色| 欧美成人基地| 国产高清亚洲| 中文视频一区| 激情综合网址| 久久国产精品色av免费看| 亚洲夜间福利| 高清日韩中文字幕| 亚洲18在线| 欧美日韩中文一区二区| 欧美交a欧美精品喷水| 爽好久久久欧美精品| 日韩国产一区二区三区| 国产欧美三级| 免费日韩av片| 日韩精品欧美激情一区二区| 国产精品v日韩精品v欧美精品网站| 欧美 日韩 国产精品免费观看| 国产精品久一| 亚洲人成亚洲精品| 欧美成人基地| 精品久久久中文字幕| 国产欧美午夜| 日本不卡一区二区| 在线亚洲观看| 国产精品激情| 综合激情视频| 黄色精品网站| 日韩大片免费观看| 日韩av电影一区| 丝袜美腿一区二区三区| 欧美/亚洲一区| 欧美精选视频一区二区| 国产一区2区| 精品国产一区二区三区2021| 亚洲人www| 国产农村妇女精品一二区| 久久蜜桃精品| 亚洲成av在线| 欧美sss在线视频| 久久精品影视| 久久精品123| 日韩综合精品| 色偷偷色偷偷色偷偷在线视频| 久久av网址| 精品亚洲a∨| 精品91福利视频| 粉嫩av一区二区三区四区五区| 狂野欧美性猛交xxxx| 国产日产精品_国产精品毛片 | 蜜桃精品在线| 日韩毛片在线| 99久久久久国产精品| 久久久久.com| 日韩中文影院| 日韩精品亚洲专区| 日韩亚洲精品在线观看| 亚洲欧美在线专区| 日韩高清二区| 欧美日韩亚洲一区三区| 欧美精品中文字幕亚洲专区| 日本午夜精品视频在线观看| 国产视频一区二| 国产精品igao视频网网址不卡日韩| 国产精品欧美一区二区三区不卡| 国产精品久久久久久久久久久久久久久 | 九一精品国产| 尤物在线精品| 亚洲精选91| 欧美另类中文字幕| 国产精品大片免费观看| 国产va免费精品观看精品视频| 国产va免费精品观看精品视频| 热三久草你在线| 国产韩日影视精品| 亚洲综合激情在线| 国产欧美一区二区三区国产幕精品 | 亚洲毛片一区| 国产精品亚洲成在人线| 激情综合五月| 亚洲一本视频| 香蕉久久一区| 久久精品国产亚洲一区二区三区| 亚洲综合电影| 在线一区视频| 欧美精品中文| 日韩免费久久| 亚洲在线观看| 日本午夜免费一区二区| 精品三级在线观看视频| 久久久一二三| 日韩视频一二区| 国产不卡精品在线| 亚洲精品一区二区在线看| 最新国产精品| 久久免费精品| 日韩一区二区久久| 欧美片网站免费| 亚洲一级黄色| 91精品在线免费视频| 国产精品精品| 狠狠色综合网| 国产精品美女午夜爽爽| 久久蜜桃精品| 日韩福利视频一区| 亚洲国产福利| 日韩中文字幕1| 精品日韩一区| 一区二区亚洲视频| 国产自产自拍视频在线观看| 美日韩精品视频| 久久只有精品| 久久最新视频| 中文在线а√在线8| 深夜日韩欧美| 国产亚洲一区二区手机在线观看| 亚洲精品进入| 日韩精品dvd| 香蕉久久久久久| 91精品啪在线观看国产18| 日韩精品亚洲专区| 亚洲大片在线| 美女久久久久久 | 国产精品嫩草99av在线| 麻豆精品视频在线| 一区二区三区午夜视频| 中文字幕在线官网| 国产调教一区二区三区| 自由日本语亚洲人高潮| 国产精品白浆|