1 분 소요

비밀 번호 인코딩하기

순서

1.BcryptPasswordEncoder란?

2.메서드

3.비밀번호 인코딩 해보기

  • 회원가입
  • 로그인
  • 비밀번호 찾기

 

1.BcryptPasswordEncoder란?

단방향 암호화

Spring Security 프레임 워크에서 제공하는 클래스로 비밀번호를 암호화 하는데 사용한다(해시)

BCrpt는 같은 비밀번호를 암호화 하더라도 해시값은 다른 값으로 도출 된다 .

+) 스프링 시큐리티?

자바 서버 개발을 위해 필요로 한 인증,권한, 부여 및 기타 기능을 제공하는 프레임워크이다.

 

2.메소드

메소드는 부모클래스인 object의 메소드를 제외하고 총 3개가 있다.

  • java.lang.String encode​(java.lang.CharSequence rawPassword)

원시 암호를 인코딩 합니다.

패스워드를 암호화 시켜주는 메소드 입니다. 8바이트 이상의 무작위로 생성된 솔트와 결합된 SHA-1 이상의 해시를 적용 한다.

매개변수로 CharSequence타입의 데이터를 넣어주면 String 타입등 으로 반환을 해준다.

매번 다른 결과가 나온다.

 

  • boolean matches​(java.lang.CharSequence rawPassword, java.lang.String encodedPassword)

저장소에서 얻은 인코딩된 암호화와 인코딩된 후 제출된 원시 암호화가 일치하는지 확인을 한다.

 

  • default boolean upgradeEncoding​(java.lang.String encodedPassword)

인코딩 된 패스워드가 안전한지 파악하는 함수이다.

더 나은 보안을 위해 인코딩 된 암호를 다시 인코딩 해야 하는 경우 true, 그렇지 않으면 false를 반환한다.

 

3.비밀번호 인코딩 해보기

-pom.xml

	
	<!-- 시큐리티  -->
	
	 <!-- security -->
        <!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-core -->
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-core</artifactId>
            <version>5.4.2</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.4.2</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.4.2</version>
        </dependency>

pom.xml에 시큐리티 디펜던시를 설정을 해준다.

security는 스프링 버전 5.2.9이상 되야한다.

 

pom.xml에 Security를 설정 하였으면 security-context.xml를 생성 하고 수정한다.

Spring/appServlet/sercurity-context.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.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">



</beans>

‘Spirng Bean Configuration File’을 통해 Namespaces에 sercurity를 설정해주고 버전이 설정되지 않는 것을 선택 해준다.

 

<bean id="bcryptPasswordEncoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"></bean>

생성한 파일에 BCryptPasswordEncoder를 빈으로 등록하기 위해 코드를 설정한다.

댓글남기기