springbooot整合dynamic?datasource數(shù)據(jù)庫密碼加密方式
前言
該文檔主要用于在springboot中利用baomidou整合多數(shù)據(jù)源時候,如果需要對數(shù)據(jù)庫密碼進(jìn)行加密該進(jìn)行哪些操作。
1.引入依賴
<dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>3.2.1</version> </dependency>
2.生成密鑰私鑰
public static void main(String[] args) throws Exception { //CryptoUtils 為自帶工具 keySize 密鑰越長,安全性越高 String[] strings = CryptoUtils.genKeyPair(512); System.out.println("公鑰:"+strings[0]); System.out.println("私鑰:"+strings[1]); }
輸出結(jié)果:
公鑰用于加密,私鑰用于解密,基于Rsa算法進(jìn)行的加密
公鑰:MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAvFj7PQS+gOWPfpeDjS37qLikoJivZOdx4KbjuLFHENS7F10ztjKFx+MUt3iOmQO8nCYdwOZJeS2ky5Oof6HI1wIDAQABAkEAmvqE0HKk5p798eZuQq8BkpVMMTExsU+YLohkfMayeS+E7/Yp2fG2XyrQfMh8hQJ9C9bWW3iKr+icOssW3HkoYQIhAP5tAUAJZuYBkDIxpCJnDhCjhRoimENsz/PqjEizdVaPAiEAvYNQBxTKaEZ0r9fUPtyBItc36L9cPuFUrhS6w8k/zTkCIBRKx12/IjjYCRMnyGqCA6oqEJScC77c790JaPTnc0VbAiEAvFvxhLhDXVT50XShPkGIEIr8xNa95rmrosJzxvkV8vECH3TIKWgr09RmQztQh49xOu5ca0y7nXDIrEeg2AiktEE=
私鑰:MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALxY+z0EvoDlj36Xg40t+6i4pKCYr2TnceCm47ixRxDUuxddM7YyhcfjFLd4jpkDvJwmHcDmSXktpMuTqH+hyNcCAwEAAQ==
// 公鑰加密 String encrypt = CryptoUtils.encrypt(s1, "password"); System.out.println("密碼加密為:"+ encrypt); // 私鑰進(jìn)行解密 System.out.println("密碼解密為:"+CryptoUtils.decrypt(s2,encrypt));
3.進(jìn)行yml配置
spring: datasource: druid: stat-view-servlet: enabled: true loginUsername: admin loginPassword: 123456 dynamic: druid: initial-size: 5 min-idle: 5 maxActive: 20 maxWait: 60000 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: SELECT 'X' testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true maxPoolPreparedStatementPerConnectionSize: 20 filters: stat,wall,slf4j connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000 datasource: master: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://xxxx.xx.xxxxx:3306/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root # ENC()括號內(nèi)就為加密的密碼; password: ENC(b5YQRCK++Ek9nNawxXfwvVxbufXJORqMHM5Pv9W0VMSuN+UCZec7bakQV4ZOo025WM7Cf/iV4E5RgVaPF5SSVQ==) #注意:public-key為剛才生成私鑰:但直接放入配置文件不安全,建議放入到啟動項中 public-key: ${publicKey} # 從庫數(shù)據(jù)源 slave: driver-class-name: org.postgresql.Driver url: jdbc:postgresql://xxxxxxxx:5432/test2?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root password: ENC(b5YQRCK++Ek9nNawxXfwvVxbufXJORqMHM5Pv9W0VMSuN+UCZec7bakQV4ZOo025WM7Cf/iV4E5RgVaPF5SSVQ==) public-key: ${publicKey}
注意:
- 可以直接使用CryptoUtils.encrypt("password),則下列的public-key參數(shù)可以不配置,視為使用默認(rèn)rsa密鑰對(不推薦)
- public-key與password為同一級,切記層級不能配錯
4.項目啟動項配置
java -jar xxxxx.jar --publicKey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALxY+z0EvoDlj36Xg40t+6i4pKCYr2T.....
5.idea項目配置
6.注意事項
如果啟動報錯,可以嘗試去掉
druid@SpringBootApplication(exclude = {DruidDataSourceAutoConfigure.class})
因為部分項目可能引入了druid,又引用了苞米豆,會引發(fā)沖突
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
springsecurity輕松實現(xiàn)角色權(quán)限的示例代碼
這篇文章主要介紹了springsecurity輕松實現(xiàn)角色權(quán)限的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03Unicode、UTF-8 和 ISO8859-1區(qū)別解析
這篇文章主要介紹了Unicode、UTF-8 和 ISO8859-1到底有什么區(qū)別,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-01-01Spring?JPA使用CriteriaBuilder動態(tài)構(gòu)造查詢方式
這篇文章主要介紹了Spring?JPA使用CriteriaBuilder動態(tài)構(gòu)造查詢方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12SpringBoot Scheduling定時任務(wù)的示例代碼
springBoot提供了定時任務(wù)的支持,通過注解簡單快捷,對于日常定時任務(wù)可以使用。本文詳細(xì)的介紹一下使用,感興趣的可以了解一下2021-08-08Mybatis-Plus默認(rèn)主鍵策略導(dǎo)致自動生成19位長度主鍵id的坑
這篇文章主要介紹了Mybatis-Plus默認(rèn)主鍵策略導(dǎo)致自動生成19位長度主鍵id的坑,本文一步步給大家分享解決方法,給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-12-12