암호화 하는 방법은 


스프링에서 처리하는 방법, 데이터베이스에서 처리하는 방법 이렇게 저는 2가지 알고있어요 ㅎㅎ


우선 스프링에서 암호화처리하여 DB에 저장하는 방법은

http://kingchobocoding.tistory.com/4?category=978301 여기에 올려 뒀으니 참고 하세요 


데이터베이스에서 처리하는 방법은 너무 간단해서 따로 버튼을 추가하진 않겠습니다.


기존에 작성하셨던 회원가입에서 signup.xml 에서 mabatis 쿼리만 바꿔주면 됩니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
    <insert id="insertMember" parameterType="com.sjh.signup.SignupVO">
        INSERT INTO tbl_member(
            userid,
            userpwd,
            username,
            email,
            addr1,
            addr2,
            addr3
        )VALUES(
            #{userid},
            #{userpwd},
            #{username},
            #{email},
            #{addr1},
            #{addr2},
            #{addr3}
        )
    </insert>
cs


기존 작성하신 것에서 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
    <insert id="insertMember" parameterType="com.sjh.signup.SignupVO">
            INSERT INTO tbl_member(
                userid,
                userpwd,
                username,
                email,
                addr1,
                addr2,
                addr3
            )VALUES(
                #{userid},
                PASSWORD(#{userpwd}),
                #{username},
                #{email},
                #{addr1},
                #{addr2},
                #{addr3}
            )
        </insert>
cs


무엇이 바뀌었는지 아시겠나요 ?ㅎㅎㅎ

PASSWORD(#{userpwd}), 이부분입니다.


앞에 password만 적어주시고 괄호로 묶어주시면 

기존 test로 회원가입했을 땐 1234 로 들어갔던것이 

암호화처리되어 입력된것이 보이시죠 ?ㅎㅎㅎ 엄청 간단합니다!!!! 


스프링에서 암호화하는 방법과 , DB에서 암호화 처리하는 방법 어떤것이 보안에 더 좋은지는 잘 모르겠습니다.

지금은 mysql 환경이지만 ORACLE 이나 기타 DBMS에서는 저렇게 해두 되나요 ?? 한번 해봐야겠네요 

안된다면 , 스프링에서 처리해야하니 두가지 다 익히셨으면 하는게 저의 생각입니다. 


물론 화면에서 넘어오는 pwd는 암호화해서 처리해서 VO로 넘어 오는 것이 아니기 때문에 

토큰?? 복호화가 가능한 ? 그렇게 처리해서 넘겨주는 것으로 알고있습니다. 자료를 많이 찾아보긴 했으나 너무 어려워서 ㅠㅠ

후에 다시 시도해보고 올리도록 해보겠습니다. 


다음엔 주소를 다음 API를 써서 처리하는 글을 올리겠습니다. ~

스프링 사이트에 가면 여러가지 프로젝트 들이 있다.


그중에서


SPRING SECURITY 를 선택하여 

pom. xml에 dependencies와 repository를 넣고 메이븐 업데이트를 하면 준비가 완료된다.


이제 회원가입시 입력받은 비밀번호를 암호화아여 디비에 잘 저장되는지 확인해보겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Override
    public void insert(SignupVO vo) throws Exception {
        
        
        BCryptPasswordEncoder scpwd = new BCryptPasswordEncoder();
        System.out.println(vo.toString());
        //암호화 하기전
          String password = scpwd.encode(vo.getCppwd());
        //암호화 하여 password에 저장
        vo.setCppwd(password);
        System.out.println(vo.toString());
        
        dao.insert(vo);
 
    }
    
cs



우선 암호화 하기전에 입력받은 값을 출력해보고 

scpwd.encode(암호화 할 비밀번호) = password에 저장하고


암호화 처리 된 password를 출력해보시면 암호화가 잘 처리된 것을 확일할 수 있습니다.



vo를 찍어보면 암호하하기전에 입력 받은 값은 qwer 이고

함호화 이후엔 $2a$10$.lCIFYSuP26ioqh4dJHlXeWEaZiyCFSCD1k./D4paL/nbXIzaXmqC  로 입력된걸 확인할 수 있다.


데이터 베이스에 잘 저장되었는지 확인해보면

잘 저장되었다. 


BCryptPasswordEncoder는 복호화가 되지 않으므로 로그인 할때도 암호화한걸 비교해서 로그인 하시면 됩니다.~




+ Recent posts