토이 프로젝트를 하는 와중에 jaspyt라는 라이브러리를 알게되어 jaspyt 라이브러리와 간단한 사용법을 정리하려고 한다.
jaspyt는 Java Simplified Encryption 라이브러리로서, 공식홈페이지에 아래와 같이 설명하고 있었다.
간단하게 암호화/복호화 자바 라이브러리인데, 구글링을 해보면 applicayion.yml 파일에 암호화된 데이터를 저장하기 위해서 사용한다.
busStop:
apiKey: ENC(AUw9mJhN8RLlXXe2dO6ZL8m2Tynqa0neV99nYpxZgDbo2wUjrKCzKp4WbdiPIg3GVk/6z0oar39YYR5b3HFyOAZ7v9p65Wrssj2rau0cqGjIJnCj9rDMCLRDdtHI491rkmQ9B4Fw8qg=)
url:
나도 jaspyt 라이브러리를 알게된 계기와 사용법 또한 git repository에 올라가는 소스 정보중 application.yml 파일에 중요 정보가 노출되지 않고 암호화된 데이터로 저장하기 위함이었다.
서론이 길었고.. 사용법을 정리해보자.
정확한 사용법은 https://github.com/ulisesbocchio/jasypt-spring-boot#use-you-own-custom-encryptor
에 매우 상세하게 나와있다.
이 포스팅의 목적은 내가 기억하고.. 정말 copy and paste로 간단하게 사용하기 위한 분들을 위함이다.
@Configuration
public class JasyptConfig {
@Value("${jasypt.encryptor.key}")
String encryptorKey;
@Bean("jasyptStringEncryptor")
public StringEncryptor stringEncryptor(){
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
SimpleStringPBEConfig config = new SimpleStringPBEConfig();
config.setPassword(encryptorKey); // 암호화 키 값
config.setAlgorithm("PBEWithMD5AndDES"); // 암호 알고리즘
config.setKeyObtentionIterations("1000"); // PBE 해쉬 횟수
config.setPoolSize("1");
config.setProviderName("SunJCE");
config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
config.setIvGeneratorClassName("org.jasypt.iv.NoIvGenerator");
config.setStringOutputType("base64");
encryptor.setConfig(config);
return encryptor;
}
}
https://www.devglan.com/online-tools/jasypt-online-encryption-decryption 사이트에서 데이터를 키 값을 이용해서 암호화할 수 있다.
암호화된 정보를 ENC(암호화 데이터)로 넣어주면 된다.
https://medium.com/@byeongsoon94/spring-boot-yaml-%ED%8C%8C%EC%9D%BC%EC%9D%98-%EC%95%94%ED%98%B8%ED%99%94%EC%99%80-jasypt-passwod-%EB%85%B8%EC%B6%9C-%EB%B0%A9%EC%A7%80-9995e1489262
https://www.devglan.com/online-tools/jasypt-online-encryption-decryption
http://www.jasypt.org/