国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - SrpingDruid數(shù)據(jù)源加密數(shù)據(jù)庫(kù)密碼的示例代碼

SrpingDruid數(shù)據(jù)源加密數(shù)據(jù)庫(kù)密碼的示例代碼

2021-01-28 12:47葉莜落 Java教程

本篇文章主要介紹了SrpingDruid數(shù)據(jù)源加密數(shù)據(jù)庫(kù)密碼的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

前言

在工作中遇到這樣一個(gè)問(wèn)題:開(kāi)發(fā)過(guò)程中將數(shù)據(jù)庫(kù)的賬號(hào)、密碼等信息配置在了一個(gè)單獨(dú)的properties配置文件中(使用明文)。但運(yùn)維人員要求在配置文件中的密碼一律不得出現(xiàn)明文。

環(huán)境

  • spring 4.2.6.release
  • mybatis 3.4.1
  • druid 1.0.14

改造思路

一般spring容器啟動(dòng)時(shí),通過(guò)propertyplaceholderconfigurer類(lèi)讀取jdbc.properties文件里的數(shù)據(jù)庫(kù)配置信息。通過(guò)這個(gè)原理,我們把加密后的數(shù)據(jù)庫(kù)配置信息放到j(luò)dbc.properties文件里,然后自定義一個(gè)繼承propertyplaceholderconfigurer的類(lèi)重寫(xiě)processproperties方法,實(shí)現(xiàn)解密,把解密后的信息又放回去。

而druid已經(jīng)幫我們實(shí)現(xiàn)了上面的功能,我們只需要更改相關(guān)的配置即可。

1.生成數(shù)據(jù)庫(kù)密碼密文,替換明文。

2.更改spring配置文件中的數(shù)據(jù)源配置,開(kāi)啟數(shù)據(jù)庫(kù)密碼解密。

改造過(guò)程

項(xiàng)目源碼地址

生成密文

在druid-1.0.14.jar所在目錄執(zhí)行命令

 

復(fù)制代碼 代碼如下:

java -cp druid-1.0.14.jar com.alibaba.druid.filter.config.configtools <your_db_password>

 

 

生成對(duì)應(yīng)的密文,復(fù)制到數(shù)據(jù)庫(kù)配置文件中。

更改druid數(shù)據(jù)源配置

開(kāi)啟數(shù)據(jù)庫(kù)密碼解密,在<bean id="datasource" class="com.alibaba.druid.pool.druiddatasource"></bean>

中添加如下屬性:

?
1
<property name="connectionproperties" value="config.decrypt=true" />

遇到的問(wèn)題

遇到以下錯(cuò)誤:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[20/10/17 12:30:29:029 cst] druid-connectionpool-create-1225284770 error pool.druiddatasource: create connection error, url: jdbc:mysql://localhost:3306/common?useunicode=true&characterencoding=utf-8
java.sql.sqlexception: access denied for user 'root'@'localhost' (using password: yes)
  at com.mysql.jdbc.sqlerror.createsqlexception(sqlerror.java:1084)
  at com.mysql.jdbc.mysqlio.checkerrorpacket(mysqlio.java:4232)
  at com.mysql.jdbc.mysqlio.checkerrorpacket(mysqlio.java:4164)
  at com.mysql.jdbc.mysqlio.checkerrorpacket(mysqlio.java:926)
  at com.mysql.jdbc.mysqlio.proceedhandshakewithpluggableauthentication(mysqlio.java:1748)
  at com.mysql.jdbc.mysqlio.dohandshake(mysqlio.java:1288)
  at com.mysql.jdbc.connectionimpl.coreconnect(connectionimpl.java:2506)
  at com.mysql.jdbc.connectionimpl.connectonetryonly(connectionimpl.java:2539)
  at com.mysql.jdbc.connectionimpl.createnewio(connectionimpl.java:2321)
  at com.mysql.jdbc.connectionimpl.<init>(connectionimpl.java:832)
  at com.mysql.jdbc.jdbc4connection.<init>(jdbc4connection.java:46)
  at sun.reflect.generatedconstructoraccessor4.newinstance(unknown source)
  at sun.reflect.delegatingconstructoraccessorimpl.newinstance(delegatingconstructoraccessorimpl.java:45)
  at java.lang.reflect.constructor.newinstance(constructor.java:526)
  at com.mysql.jdbc.util.handlenewinstance(util.java:409)
  at com.mysql.jdbc.connectionimpl.getinstance(connectionimpl.java:417)
  at com.mysql.jdbc.nonregisteringdriver.connect(nonregisteringdriver.java:344)
  at com.alibaba.druid.filter.filterchainimpl.connection_connect(filterchainimpl.java:148)
  at com.alibaba.druid.filter.stat.statfilter.connection_connect(statfilter.java:211)
  at com.alibaba.druid.filter.filterchainimpl.connection_connect(filterchainimpl.java:142)
  at com.alibaba.druid.pool.druidabstractdatasource.createphysicalconnection(druidabstractdatasource.java:1377)
  at com.alibaba.druid.pool.druidabstractdatasource.createphysicalconnection(druidabstractdatasource.java:1431)
  at com.alibaba.druid.pool.druiddatasource$createconnectionthread.run(druiddatasource.java:1861)

也就是說(shuō),加解密并沒(méi)有生效,因此數(shù)據(jù)庫(kù)認(rèn)為密碼錯(cuò)誤,拒絕連接。

經(jīng)對(duì)比,發(fā)現(xiàn)數(shù)據(jù)源中的<property name="filters" value="mergestat" />屬性值不對(duì),應(yīng)該為<property name="filters" value="stat,config" />

為什么filters為mergestat就不對(duì)呢?

查看src/main/java/com/alibaba/druid/filter/config/configfilter.java源碼:

在注釋43行,可以看到datasource.setfilters("config");,因此這里不是說(shuō)mergestat不行,而是缺少config的配置。

更多配置請(qǐng)參考wiki

總結(jié)

  1. 必須為spring項(xiàng)目,否則無(wú)法生效。在只含mybatis和druid(不含spring)的程序中使用上面的改造,發(fā)現(xiàn)還是無(wú)法正確連接數(shù)據(jù)庫(kù)。

  2. druid datasource配置中filters屬性不應(yīng)為mergestat,否則無(wú)法生效。

  3. 為druid數(shù)據(jù)源打call,說(shuō)它是優(yōu)秀的java數(shù)據(jù)源一點(diǎn)也不為過(guò)。

升級(jí)druid到高版本

參考資料:druid wiki:使用configfilter

主要變化有兩處:

1.生成的密碼有公鑰、私鑰、簽名之分。

2.配置文件中需要配置簽名和公鑰,spring配置文件也需要相應(yīng)更改為:

 

復(fù)制代碼 代碼如下:

<property name="connectionproperties" value="config.decrypt=true;config.decrypt.key=${publickey}" />

 

錯(cuò)誤:failed to decrypt 和 java.security.nosuchalgorithmexception:cannot find any provider supporting rsa/ecb/pkcs1padding

SrpingDruid數(shù)據(jù)源加密數(shù)據(jù)庫(kù)密碼的示例代碼

SrpingDruid數(shù)據(jù)源加密數(shù)據(jù)庫(kù)密碼的示例代碼

進(jìn)一步說(shuō)明:該問(wèn)題在eclipse直接啟動(dòng)中不會(huì)出現(xiàn),但部署到服務(wù)器上會(huì)出現(xiàn)。

原因:在解密步驟中出錯(cuò),找不到支持rsa/ecb/pkcs1padding等和解密相關(guān)的算法相關(guān)的提供者。

解決:將${java_home}\lib\ext目錄下的sunjce_provider.jar添加到classpath目錄下。

補(bǔ)充:在druid github issues中作者溫少將該問(wèn)題標(biāo)記為bug,但我認(rèn)為這只是環(huán)境問(wèn)題,不屬于druid本身的bug。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://www.cnblogs.com/helloIT/p/7761921.html?utm_source=tuicool&utm_medium=referral

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 成人免费视频网 | 中文字幕精品一区二区精品绿巨人 | 国产一级高清视频 | 精品天堂 | 激情欧美日韩一区二区 | 精品免费av | 精品视频一区二区三区 | 国产小视频在线 | 国产精品毛片久久久久久久 | 二区影院 | 久久久久国产精品免费免费搜索 | 成人夜色av| 综合久久av | 91精品国产综合久久久久久丝袜 | 国产欧美一二三区在线粉嫩 | 日韩国产免费观看 | 久久久精品播放 | 久久午夜精品 | 国产精品99久久久久久www | 精品久久久久久久久久久久久久 | 国产欧美精品一区二区三区 | 日韩视频精品在线 | 国产成人精品一区二区三区四区 | 婷婷精品久久久久久久久久不卡 | |级毛片| 中文视频在线 | 羞羞视频免费网站 | 国产日产精品一区二区三区四区 | www.天天操| 精品视频三区 | 久久亚洲一区二区 | 久久最新 | 国产精品亚洲一区二区三区 | 亚洲啪啪| 久久久国产99久久国产一 | 中文字幕天天操 | 在线中文视频 | 日韩免费在线观看视频 | a级片在线观看 | 久久99久久99精品免视看婷婷 | 色九九 |