study/Spring
5_Spring(암호화)
스파이크12
2020. 2. 27. 08:53
1. 비밀번호를 평문으로 저장하면 어떻게 될까?
-> 범죄행위
2. SHA-512 해시함수를 이용한 암호화
-> 단방향 해시 함수(복호화 불가능)
문제점 : 같은 비밀번호는 암호화 내용(다이제스트)이 똑같다
-> 다이제스트가 많이 모이면 원래 비밀번호를
검색을 통해 찾아낼 가능성이 있음(해킹에 취약)
- 일반적인 장비로도 1초에 56억개의 다이제스트를 만들수 있음
3. bcrypt 해시 함수를 이용한 암호화(salting 기법)
- 입력된 문자열을 암호화 할때 바로 해시함수에 대입하는 것이 아닌
임의의 값(salt)을 문자열에 추가하여 암호화를 진행
Spring Security 모듈에서 지원해줌
-> pom.xml 라이브러리 추가
pom.xml
<!-- Spring Security 모듈 추가 -->
<!--
spring-security-core
spring-security-web
spring-security-config
-->
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-core -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>5.2.2.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-web -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>5.2.2.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-config -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>5.2.2.RELEASE</version>
</dependency>
Java Resources/src/main/resources/spring 에 spring-security.xml 추가
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:security="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-5.2.xsd
http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 네임스페이스들어가서 시큐리티 체크 -->
<!-- 스프링 보안과 관련된 설정을 추가하는 파일 -->
<!-- bcyprt 암호화 관련 bean 등록 -->
<bean id="bcryptPasswordEncoder"
class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/>
<!-- 해당 xml파일을 읽을 수 있도록
web.xml에서 contextConfigLocation에 해당 xml 경로 추가
-->
</beans>
네임스페이스들어가서 시큐리티체크
web.xml
-> ServiceImpl
상단에
@Autowired
private BCryptPasswordEncoder bCryptPasswordEncoder;
암호화
bCryptPasswordEncoder.encode(암호화할매개변수);
bCryptPasswordEncode.matches(암호화되지않은문자열,암호화된문자열);