본문 바로가기
CLASS/SERVLET

#3-2 / 암호화(security)

by hingu 2024. 5. 30.

base64 암호화 함수

- 암호화를 이용하여 사용자가 입력한 값을 다른 문자로 변환 가능하며 복구화 가능

- 결제금액 등 보안이 약해도 되는 항목에 적용 - 개인정보에선 사용하지 x (복구화가 가능하기 때문에)

 

window.btoa(값); : 사용자가 입력한 값을 base64 암호화

window.atob(값); : base64 암호화한 값을 원래 단어로 복원

한글 : window.btoa(encodeURIComponent(값));

⚡ javascript 암호화 (base64)
<body>
	<form action="./securityok.do" method="get" id="frm">
		<input type="hidden" name="pwd" value="">
		비밀번호 : <input type="text" name="password">
		<input type="button" value="클릭" onclick="abc()">
	</form>
	
	<form id="frm2">
		고객명 : <input type="text" name="user"> 
		<input type="button" value="클릭" onclick="base64()">
	</form>
</body>
<script type="text/javascript">
	//영문,숫자
	function abc(){
		var pw = frm.password.value;
		var encode = window.btoa(pw); //사용자가 입력한 값을 base64 암호화
		var decode = window.atob(encode); //base64 암호화한 값을 원래 단어로 복원
		
		frm.pwd.value = encode; //암호화된 문자값을 백엔드로 전달
	}
	
	//한글
	function base64(){
		var word= frm2.user.value;
		var encode = window.btoa(encodeURIComponent(word));
	}
</script>

 

java 암호화 (base64)

- 모든 암호화는 byte로 변환이 되어서 사용해야함
base64 encode 사용법 : 문자를 byte로 변환 후 해당 byte를 라이브러리를 통하여 암호화
base64 decode 사용법 : 문자를 byte로 변환 후 라이브를 통하여 복호화

- 기본 문법
//base64 encode 사용법 : 문자를 byte로 변환 후 해당 byte를 라이브러리를 통하여 암호화
String word = "a12345";
byte a[] = word.getBytes();
Encoder ec = Base64.getEncoder();
byte b[] = ec.encode(a);
System.out.println(new String(b)); //YTEyMzQ1 출력

//base64 decode 사용법 : 문자를 byte로 변환 후 라이브를 통하여 복호화
String word2 = "YTEyMzQ1";
Decoder dc = Base64.getDecoder();
byte c[] = dc.decode(word2);
System.out.println(new String(c)); //a12345 출력
해당 라이브러리 사용



- 위 html과 연계( Front에서 base64로 암호화된 값을 복구화하여 데이터값을 확인하는 방식 )

public class securityok extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {		
		String pwd = request.getParameter("pwd").intern();
		//front에서 암호화 되어서 넘어온 값은 byte로 변환할 필요x
		Decoder code = Base64.getDecoder();
		byte code2[] = code.decode(pwd);
		System.out.println(new String(code2)); //사용자가 입력한 값 그대로 출력됨
	}

}

 

'CLASS > SERVLET' 카테고리의 다른 글

#4-1 / html에서 java class로 값 전달,로그인 예제  (0) 2024.05.31
#3-3 / html-> html 값 전달  (0) 2024.05.30
#3-1 / form 예제  (0) 2024.05.30
#2-4 / double form  (0) 2024.05.29
#2-3 / html 태그별 데이터 전송  (0) 2024.05.29