jasypt中的加密與解密
阿新 • • 發佈:2019-01-29
沒什麼好說的了,直接看demo。
- 新增依賴
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>1.16</version>
</dependency>
- application.yml 中配置跟祕鑰
jasypt:
encryptor:
password: demo
- 測試
import org.jasypt.encryption.StringEncryptor; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes = JasyptApplication.class) public class JasyptApplicationTests { @Autowired private StringEncryptor stringEncryptor; @Test public void contextLoads() { //加密方法 System.out.println(stringEncryptor.encrypt("123456")); System.out.println(stringEncryptor.encrypt("123456")); //解密方法 System.out.println(stringEncryptor.decrypt("uaNBj4ZmzCD83uedRYUXqQ==")); System.out.println(stringEncryptor.decrypt("oKBQENfbbQiMyPvECAgPGA==")); } }
執行測試結果如下,可以看到,每次加密產生的密文都不一樣,然後不一樣的密文解密產生的結果是一樣的。密文只有對應的跟祕鑰才能解析出來明文,不然會拋錯org.jasypt.exceptions.EncryptionOperationNotPossibleException
所以在配置檔案中配置密碼等敏感欄位時,我們可以先加密,配置密文上去,然後使用這個演算法解密出來明文使用。
其他非對稱高階演算法參考 。