起因:因為我個人微博想要公開源碼,但數據庫配置文件會暴露在外面,又不想生產跟開發環境建來回切換,所以想到了加密數據庫密碼,於是問了群里的一個朋友小XX(原諒我不識字)
經過:
簡單粗暴,直接上代碼:
1.需要引入依賴
<!-- 數據庫加密 -->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
2.然后再yml或者properties中加入:
jasypt.encryptor.password=nmyswls
這個是鹽值
3.在測試類中
@RunWith(SpringRunner.class) @SpringBootTest public class test_jiami { @Autowired StringEncryptor stringEncryptor; @Test public void encryptPwd() { String result = stringEncryptor.encrypt("root"); System.out.println(result); } }
這里面的參數是你的密碼,然后返回來的是加密后的密碼:yyrqk9reuY5kScmS3D9mWQ==
4.將加密后的密碼貼到配置文件中,如下:
spring.datasource.password=ENC(yyrqk9reuY5kScmS3D9mWQ==)
這樣就ok了,但我感覺如果你一不小心將你的密碼在測試代碼中提交上去,豈不是白加密了嗎,其實還有一種方法:
在你的maven倉庫中找到:D:\repository\org\jasypt\jasypt\1.9.2,這個包就是加密的包了
cmd在這個包下執行如下命令,它會返回你加密后的密碼:
java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="root" password=zhang algorithm=PBEWithMD5AndDES
其中:
input:是數據庫的明文密碼
password:是機密的鹽
algorithm:是加密的方式(默認)
然后在配置文件中把鹽加進去就ok了
jasypt.encryptor.password=nmyswls
結果:媽媽再也不用擔心我的密碼被盜了~
