1. 程式人生 > >jasypt中的加密與解密

jasypt中的加密與解密

沒什麼好說的了,直接看demo。

  1. 新增依賴
		<dependency>
			<groupId>com.github.ulisesbocchio</groupId>
			<artifactId>jasypt-spring-boot-starter</artifactId>
			<version>1.16</version>
		</dependency>
  1. application.yml 中配置跟祕鑰
jasypt:
  encryptor:
    password: demo
  1. 測試

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

所以在配置檔案中配置密碼等敏感欄位時,我們可以先加密,配置密文上去,然後使用這個演算法解密出來明文使用。
其他非對稱高階演算法參考