jasypt란?
Jasypt(Java Simplified Encryption)는 자바 애플리케이션에서 쉽게 암호화 기능을 구현할 수 있도록 도와주는 라이브러리입니다.
암호화 관련 코드를 작성할 필요 없이, 간단한 설정만으로 암호화 기능을 적용할 수 있습니다.
Jasypt는 대칭키 암호화와 비대칭키 암호화를 모두 지원하며, 다양한 알고리즘과 모드를 제공합니다.
또한, 프로퍼티 파일이나 환경 변수와 같은 설정 정보를 암호화하는 기능도 제공하여, 보안에 민감한 정보를 보호할 수 있습니다.
Spring Framework와의 연동도 용이하며, Spring Boot에서는 jasypt-spring-boot-starter를 이용하여 설정하기 쉽게 제공됩니다.
따라서, Spring 기반의 애플리케이션에서 암호화 기능을 적용할 때 Jasypt를 사용하는 것이 유용합니다.
기본 설정
- config.setPassword(encryptKey);
- 암호화에 사용할 키 값을 설정합니다.
- config.setPoolSize("1");
- 객체 풀링(pooling) 크기를 1로 설정합니다.
- config.setAlgorithm("PBEWithMD5AndDES");
- 암호화에 사용할 알고리즘을 PBEWithMD5AndDES로 설정합니다.
- config.setStringOutputType("base64");
- 암호화된 결과를 문자열 형태로 변환할 때 사용할 인코딩 방식을 base64로 설정합니다.
- config.setKeyObtentionIterations("1000");
- 암호화 키를 얻기 위해 반복 수행할 횟수를 1000회로 설정합니다.
- config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
- 암호화할 때 사용할 salt(소금) 값을 생성하는 클래스 이름을 org.jasypt.salt.RandomSaltGenerator로 설정합니다.
- encryptor.setConfig(config);
- 위에서 설정한 SimpleStringPBEConfig 객체를 PooledPBEStringEncryptor 객체에 적용합니다.
암호화 종류
- PBEWithMD5AndDES (권장 X)
블록 암호화 기법 중 하나인 DES(Data Encryption Standard)를 사용한 대칭키 암호화 방식입니다.
암호화 및 복호화에 사용되는 비밀번호를 키로 사용합니다.
암호화 강도가 낮아서 현재는 권장하지 않는 알고리즘입니다.
- PBEWithMD5AndTripleDES (권장 X)
DES를 3회 연속 사용하여 대칭키 암호화 방식입니다.
PBEWithMD5AndDES보다 더 강력한 암호화를 제공합니다.
하지만, 실행 속도가 느리고 메모리 사용량이 많아서 현재는 권장하지 않는 알고리즘입니다.
- PBEWithSHA1AndDESede
Triple DES를 사용한 대칭키 암호화 방식입니다.
DESede는 DES의 보안성 문제를 보완한 알고리즘으로, 블록 크기와 키 길이가 더 크기 때문에 더욱 강력한 암호화를 제공합니다.
PBEWithMD5AndTripleDES보다 더욱 강력한 암호화를 제공합니다.
- PBEWithSHA1AndRC2_40
RC2는 블록 암호화 기법 중 하나입니다.
PBEWithSHA1AndDESede보다는 약하지만, PBEWithMD5AndDES보다는 더욱 강력한 암호화를 제공합니다.
블록 크기와 키 길이를 설정할 수 있어서, 암호화 강도를 조절할 수 있습니다.
- PBEWithHmacSHA512AndAES_256 (권장)
대칭키 암호화 방식 중 하나인 AES(Advanced Encryption Standard)를 사용합니다.
암호화 강도가 높아서, 현재 권장되는 알고리즘 중 하나입니다.
HMAC-SHA512 메시지 인증 코드를 사용하여 더욱 강력한 보안을 제공합니다.
OutPut Type
base64
- 암호화된 문자열을 Base64로 인코딩합니다. 이는 암호화된 문자열을 ASCII 문자로 인코딩하는 데 사용됩니다.
- 대부분의 데이터 타입에 적용 가능하며, 이미지나 바이너리 데이터를 전송하거나 저장하는 데 사용될 수 있습니다.
base32
- base32: URL에서 특수 문자를 피하는 데 사용됩니다.
- base32는 대소문자를 구분하지 않으며, 특수 문자를 사용하지 않으므로 URL에서 사용할 수 있습니다.
hexadecimal
- 암호화된 문자열을 16진수 문자열로 인코딩합니다. 이는 암호화된 문자열을 ASCII 문자로 인코딩하는 데 사용됩니다.
- 암호화된 데이터를 시각화하는 용도로 사용될 수 있습니다. 예를 들어, 디버깅 중에 암호화된 데이터를 쉽게 읽을 수 있습니다.
uuencode
- 암호화된 문자열을 uuencode로 인코딩합니다. uuencode는 이진 데이터를 ASCII 문자로 인코딩하는 데 사용됩니다.
- 이메일을 통해 텍스트 데이터를 전송할 때 사용됩니다. uuencoding은 이메일 전송 프로토콜에서 텍스트 데이터를 처리하는 방식 중 하나입니다.
raw
- 암호화된 문자열을 변환하지 않습니다. 이 경우에는 암호화된 데이터가 바이너리 데이터인 경우에만 사용할 수 있습니다.
'BackEnd > Spring Boot' 카테고리의 다른 글
JPA Entity 작성_1 (공통, 같은 테이블) (0) | 2023.05.15 |
---|---|
jasypt 설정 하기 (0) | 2023.05.01 |
mysql-connector-j와 mysql-connector-java (0) | 2023.04.30 |
JPA 응용 방법 _ Specification_2 (0) | 2023.04.18 |
JPA 응용 방법 _ Specification_1 (0) | 2023.04.17 |