[스프링/Spring]properties 암호화
개발 순서
1. jasypt 다운로드 및 암복호화 문자열 생성
2. pom.xml에 dependency 추가
3. properties 파일 생성
4. servlet-context.xml에 bean 추가
1-2 1.9.2버전이 최신버전이니 최신버전을 받습니다.
1-3 다운로드 받습니다.
1-4 다운로드 받은 압축 파일을 풀고 cmd에서 bin 폴더 경로로 이동합니다.
1-5 아래와 같이 입력합니다.
encrypt input="ktko1234" password="!ktko1234@" algorithm="PBEWITHMD5ANDDES"
input값에는 실제 사용하고 있는 패스워드를 입력하고, password항목에는 암호화된 값을 복화하 할때 사용되는 Key 값을 넣으면 됩니다.
*KEY 값은 절대절대 잊어버리면 안됩니다.
실행을 하게 되면 아래와 같이 ARGUMENTS에 암호화된 알고리즘, 암호화할 값, 복호화할 Key값이 나오고 OUTPUT에는 암호화된 값이 나오고 있습니다.
<dependency> <groupId>org.jasypt</groupId> <artifactId>jasypt-spring31</artifactId> <version>1.9.2</version> </dependency>
3. properties 파일 생성
Properties의 암호화 예를들어 DB접속이 가능한 패스워드를 암호화 하였습니다.
중요한 것은 암호화한 값을 ENC('암호화 값')을 넣어줘야 합니다.
그냥 암호화한 값을 넣어주면 비밀번호로 읽어버립니다.
db.driverClassName=com.mysql.jdbc.Driver
db.url=jdbc:mysql://192.168.0.80:3306/ktko
db.username=root
db.password=ENC(oX+veMw3S7IDoAxUAfHN/yKlqAhk3FRg)
4. servlet-context.xml에 bean 추가
<bean id="encryptorConfig" class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig"> <property name="algorithm" value="PBEWithMD5AndDES" /> <property name="password" value="!zik0404@" /> </bean> <bean id="encryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor"> <property name="config" ref="encryptorConfig"></property> </bean> <bean id="propertyConfigurer" class="org.jasypt.spring31.properties.EncryptablePropertyPlaceholderConfigurer"> <constructor-arg ref="encryptor" /> <property name="locations"> <list> <value>classpath:/property/db.properties</value>
<!-- 동일한 암호화키값으로 생성된 키값을저장한 다른 properties를 추가할 수 있습니다 -->
</list> </property> </bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${db.driverClassName}"/> <property name="url" value="${db.url}" /> <property name="username" value="${db.username}"/> <property name="password" value="${db.password}"/> </bean>
5. JavaSource
자바 소스로 암복호화 하는 예제입니다.
먼저 알고리즘 종류와, 복호화 키를 setAlgorithm(), setPassword()에 입력한 후 테스트하시면 됩니다.
만약 암호화된 프로퍼티의 값을 가지고 와서 복호화를 하려면 properties의 값을 가져와서 decrypt() 안에 암호화된 값을 넣어주시면 됩니다.
StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); encryptor.setAlgorithm("PBEWITHMD5ANDDES"); encryptor.setPassword("!ktko1234@"); String encryptedPass = encryptor.encrypt("ktko1234"); String decryptedPass = encryptor.decrypt(encryptedPass); System.out.println("Encrypted Password for admin is : "+encryptedPass); System.out.println("Decrypted Password for admin is : "+decryptedPass);
'Spring 스프링 ' 카테고리의 다른 글
[스프링/Spring] AOP구현(@Aspect 어노테이션 사용) (0) | 2018.04.16 |
---|---|
[스프링/Spring] AOP구현(XML 스키마 기반) (0) | 2018.04.16 |
[스프링/Spring] AOP 개념 설명 (0) | 2018.04.16 |
[스프링/Spring] properties 읽어오기 (0) | 2017.09.18 |
[스프링/Spring] 단일파일 다중파일 업로드하기 (8) | 2017.09.14 |