20240228 스프링(데이터베이스 암호화, 회원가입 -비밀번호 확인)

2024. 2. 28. 18:002023.11.21-2024.05.31

-- SHA2 924592b9b103f14f833faafb67f480691f01988aa457c0061769f58cd47311bc
SELECT SHA2('01234567',256)
FROM DUAL;

 

 

데이터베이스 암호화

사용자의 입력 ->jsp ->스프링 ->DB

-------------------------------------------------평문 저장

 

개인정보는 다 암호화 해서 저장하세요.

 

암호화 종류

구간     http80(탈취 위험성이 있음)      https443(비식별)

스프링 시큐리티 사용자가 jsp -> 스프링 ->DB

DB암호화                                                    /////

 

대칭키 암호화

: 대표적인 대칭키 암호 알고리즘은 국내의 SEED,ARIA,LEA,HIGHT 국외의 AES,3TDEA,Camellia 등이 있다.

 

 

 

듀얼테이블 :임시(가상으)로 존재하는 테이블

 

 

SELECT NOW()
FROM DUAL;

 

 

여기 블로그 보고 따라해보자.

https://shxrecord.tistory.com/238

 

[MySQL,MariaDB]암호화, 복호화

오래전 토이프로젝트로 시작한 소스를 리팩토링하면서 암호화 기능을 추가해봤습니다. 소스는 여기에서 확인하실 수 있습니다. 무료로 사용이 가능한 MariaDB에서는 단/양방향의 암호화 기능을

shxrecord.tistory.com

 

 

 

암호화 하기

--암호화 하기

SELECT AES_ENCRYPT(str,key_str)
FROM DUAL;

 

 

 

 

헥사코드로 변경해서 사용하기

헥사코드로 변경

 

 

compose > book변경

--암호화 하기
SELECT HEX(AES_ENCRYPT('01234567','book'))FROM DUAL;

 

 

 

 

복호화 : 다시 평문으로 변경

--복호화(평문화)
SELECT 
	AES_DECRYPT(UNHEX('D1D94F7847135EA0901A5DD3D213561C'),'book')
	
FROM DUAL;

 

 

 

md5 : 단방향으로 암호화만 된다.

그래서 입력받은 것을 꼭 복호화하고 확인 후 입력한다.

 

select MD5('01234567')
FROM DUAL;

 

 

 

HEX, MD5 >두개 섞어보기

SELECT 
	HEX(AES_ENCRYPT(MD5('01234567'),'book'))	
FROM DUAL;

 

 

같은내용 as로 암호로 지칭

 

 

 

SHA2

 : SHA-2 계열은 224, 256, 384, 512비트로 된 다이제스트(해시값)이 있는 6개의 해시 함수를 구성하고 있다.

 

-- SHA2 924592b9b103f14f833faafb67f480691f01988aa457c0061769f58cd47311bc
SELECT SHA2('01234567',256)
FROM DUAL;

 

 

224
384
512

 

 

우리 암호를 암호화 시켜서 사용

기존 저장되어있는 패스워드 암호화

 

-- 우리꺼 암호화 : member 테이블
SELECT mpw
FROM member;

 

 

 

 

암호키 Daiso(대소문자 구분)

 

-- 암호키 Daiso
-- HEX(AES_ENCRYPT(mpw,'Daiso'))
UPDATE member SET mpw=HEX(AES_ENCRYPT(mpw,'Daiso'));

 

 

 

 

 

암호 공통으로 변경

UPDATE member SET mpw='01234567'

 

 

전체 암호 >암호화

UPDATE member SET mpw=HEX(AES_ENCRYPT(mpw,'Daiso'))

 

 

 

암호화에 사용한 쿼리

--암호화 하기
SELECT HEX(AES_ENCRYPT('01234567','book'))FROM DUAL;

--복호화(평문화)
SELECT 
	AES_DECRYPT(UNHEX('D1D94F7847135EA0901A5DD3D213561C'),'book')
	
FROM DUAL;


-- MD5 > 2e9ec317e197819358fbc43afca7d837
select MD5('01234567')
FROM DUAL;


-- HEX, MD5
SELECT 
	HEX(AES_ENCRYPT(MD5('01234567'),'book')) AS '암호'	
FROM DUAL;


-- SHA2 
SELECT SHA2('01234567',512)
FROM DUAL;


-- 우리꺼 암호화 : member 테이블
SELECT mpw
FROM member;

-- 암호키 Daiso
-- HEX(AES_ENCRYPT(mpw,'Daiso'))
UPDATE member SET mpw=HEX(AES_ENCRYPT(mpw,'Daiso'));

-- 복호화
UPDATE member SET mpw='01234567'
UPDATE member SET mpw=HEX(AES_ENCRYPT(mpw,'Daiso'))

 

 

로그인매퍼

 

복호화 시킨거 패스워드 뜨게 하기

 

SELECT AES_DECRYPT(unhex(mpw),'Daiso') AS '복호화' FROM member;

 

 

 

>이후에 로그인 되어야하고, 회원가입할 때 동일한 비밀번호를 사용해서 같은지 확인

>> 로그인도 되고, 암호화 되서 데이터베이스에도 저장된다.

 

 

 

해야할 것

 

1. 비밀번호 pw1과 pw2가 같은지 확인하기 =3글자 이상 >스크립트로 짜보기

2. 이름 길이 검사 = 3글자 이상, 10글자 이하 //아이디 체크

3. 이메일 형식이 맞는지 검사 =@가 있는지 검사, .있는지 검사

4. 전송하기

 

 

1. 비밀번호 확인

조인jsp >스크립트 안에 비밀번호 같은지 확인하는 스크립트 작성

        function passConfirm(){
        	let password = document.getElementById('password');
        	let passwordConfirm = document.getElementById('passwordConfirm');
        	let confrimMsg = document.getElementById('confirmMsg');
        	let correctColor = "#00ff00";
        	let wrongColor = "#ff0000";
        	
        	if(password.value == passwordConfirm.value){
        		confirmMsg.style.color = correctColor;
        		confirmMsg.innerHTML ="비밀번호 일치";
        		
        	}else{
        		confirmMsg.style.color = wrongColor;
        		confirmMsg.innerHTML="비밀번호 불일치";
        	}
        }

 

 

>body 안에 비밀번호, 비밀번호2에 만들어주기

				 <!-- 비밀번호 -->
 			<div class="mb-3 row">
				<label for="inputPassword" class="col-sm-2 col-form-label">비밀번호</label>
				<div class="col-sm-5">
				
					<input type="password" class="form-control" id="password" placeholder="암호를 입력하세요">
				</div>
						<!-- onkeyup="JP function" 입력이 되었을 때, -->
						 <!-- 비밀번호2 -->
  				<div class="col-sm-5">
					<input type="password" class="form-control" id="passwordConfirm" placeholder="암호를 확인하세요" onkeyup="passConfirm()">
					<span id="confirmMsg"></span>
				</div>
			</div>

 

여기 블로그 참고해서 만들었다.

https://m.blog.naver.com/yura0501/221424122767

 

Spring(4) - 아이디 중복체크, 비밀번호 확인, 로그인처리

1. 비밀번호, 비밀번호 확인하기 (* javascript 사용) 회원 가입 jsp에서 scrip 추가하기 joinForm.jsp 2....

blog.naver.com

 

2.아이디체크 > 시발 안된다.