반응형
1. Jasypt란 Java Simplified Encryption의 약자이며, Java 언어로 개발된 간단한 암호화 및 복호화 기능을 제공하는 라이브러리이다.
2. 장점
- Jasypt는 다양한 암호화 알고리즘과 기술을 지원하여 데이터 보안을 향상하는 데 도움을 준다.
- Jasypt는 대칭키 및 비대칭키 암호화 방식을 지원하고, AES, RSA 등 다양한 알고리즘을 선택할 수 있다.
- 소스코드나 성정 파일에 민감한 정보가 노출되지 않도록 해준다.
3. 예제
###### 데이터베이스 연결 정보 ######
## Database Configuration
db.driverClassName=net.sf.log4jdbc.DriverSpy
db.url=G7AX2MI3LkSu4QTc8Rrg8SvH3KpTnKQtdwQvPQquGh4lyQakAtxnpBKeKSBU2Rb15Xwx8viuBX0RpslGydLvZSqzMuoLRHPcj0Nizpvy5LuUuMAm1mmlzwQN8PYjfZiXWnmz6nF1CsyGITX03ydc85BmNXeb+ZE0oO7yBpgPozY=
db.username=12jZy3qMYXQTBdnsE1Ed/YX0+MrtFX8h
db.password=o1SU+9dyALOW37cFwVfuKZs44oEu06YF
... 이하 생략 ...
- 이런식으로 암호화가 되어 유출이 되어도 파악하기 힘들다.
4. Spring에서의 적용
/**
* @Class Name : WeaverJasyptEncryptorWrapper.java
* @Description : WeaverJasyptEncryptorWrapper Class
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ --------- --------- -------------------------------
* @ 2024.08.05 mitw Jasypt 활용을 위한 Wrapper 구성
*
* @author mitw
* @since 2024.08.05
* @version 1.0
*/
public class WeaverJasyptEncryptorWrapper {
private StandardPBEStringEncryptor encryptor;
public WeaverJasyptEncryptorWrapper(StandardPBEStringEncryptor encryptor){
this.encryptor = encryptor;
this.encryptor.setAlgorithm(GetProperties.getProperty("jasypt.algorithm"));
this.encryptor.setPassword(GetProperties.getProperty("jasypt.password"));
}
public String weaverJasyptDecrypt(String enc){
return encryptor.decrypt(enc);
}
}
- 위와 같이 StandardPBEStringEncryptor를 사용하기 위한 WeaverJasyptEncryptorWrapper를 구현한다.
@Configuration
public class ContextDataSource {
WeaverJasyptEncryptorWrapper encryptorAdapter = new WeaverJasyptEncryptorWrapper(new StandardPBEStringEncryptor());
@Bean
public DataSource dataSource(){
return new HikariDataSource(hikariConfig());
}
// HikariCP Configure
public HikariConfig hikariConfig(){
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setDriverClassName(GetProperties.getProperty("db.driverClassName"));
hikariConfig.setJdbcUrl(encryptorAdapter.weaverJasyptDecrypt(GetProperties.getProperty("db.url")));
hikariConfig.setUsername(encryptorAdapter.weaverJasyptDecrypt(GetProperties.getProperty("db.username")));
hikariConfig.setPassword(encryptorAdapter.weaverJasyptDecrypt(GetProperties.getProperty("db.password")));
hikariConfig.setMaximumPoolSize(Integer.parseInt(GetProperties.getProperty("db.maximumPoolSize")));
hikariConfig.setMinimumIdle(Integer.parseInt(GetProperties.getProperty("db.minimumIdle")));
hikariConfig.setConnectionTimeout(Long.parseLong(GetProperties.getProperty("db.connectionTimeout")));
hikariConfig.setIdleTimeout(Long.parseLong(GetProperties.getProperty("db.idleTimeout")));
hikariConfig.setMaxLifetime(Long.parseLong(GetProperties.getProperty("db.maxLifetime")));
hikariConfig.setLeakDetectionThreshold(Long.parseLong(GetProperties.getProperty("db.leakDetectionThreshold")));
return new HikariDataSource(hikariConfig);
}
}
- 가령 이런식으로의 사용이 가능해진다.
Jasypt.. 뭐라고 읽는거니.. 자십트?
자십트 자십트 하니까..
왜 자꾸 이런게 생각나지.. ㅡㅡ;;
자십트 이기는 부모 없다... ㅈㅅ
'Java & Spring' 카테고리의 다른 글
localhost:8080/ 로 접근했는데. 수상한 url로 가는 경우. (0) | 2024.05.10 |
---|---|
과학기술정보통신부(과기정통부)에서 긴급으로 apache fileupload 및 tomcat 취약 버전 체크 (0) | 2024.04.16 |
intellij / project structure 설정하기. (0) | 2023.11.07 |
SLF4J: No SLF4J providers were found. SLF4J: Defaulting to no-operation (NOP) logger implementation. (0) | 2023.10.31 |
JAVA image resizing 이미지 리사이징 (feat. thumbnail), crop 지원 (0) | 2023.09.15 |
댓글