반응형

# 자바스크립트를 이용한 비밀번호 암호화(SHA256 사용)

  • 자바 스크립트를 이용한 비밀번호 암호화 방법.
  • 암호화 시 SHA256 이용 ( 복호화 불가능)
  • SHA256 확인 사이트 https://emn178.github.io/online-tools/sha256.html ( 복호화 불가능 )
  • 예제(회원가입 시 비밀번호 
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>

<h1>회원 가입</h1>
<div class="join-form-box">
	<form action="doJoin" method="POST" class="join-form form2"
		onsubmit="submitJoinForm(this); return false;">
		<input type="hidden" name="loginPwReal">
		<div class="form-row">
			<div class="label">비밀번호</div>
			<div class="input">
				<input type="password" name="loginPw" maxlength="20"
					placeholder="password 입력">
			</div>
		</div>
		<div class="form-row">
			<div class="label">비밀번호 확인</div>
			<div class="input">
				<input type="password" name="loginPwConfirm" maxlength="20"
					placeholder="password 확인 입력">
			</div>
		</div>
		<div class="form-row">
			<div class="input flex-jc-c">
				<button type="submit" value="완료">완료</button>
				<button type="button" value="취소" onClick="alert('회원가입이 취소되었습니다.')">
					<a href="/blog/s/home/main">취소</a>
				</button>
			</div>
		</div>
	</form>
</div>


<!-- 비밀번호 암호화 등 -->
<script	src="https://cdnjs.cloudflare.com/ajax/libs/js-sha256/0.9.0/sha256.min.js"></script>
<script>

	var joinFormSubmitted = false;

	function submitJoinForm(form) {
		if (joinFormSubmitted) {
			alert('처리 중입니다.');
			return;
		}

		form.loginPw.value = form.loginPw.value.trim();
		if (form.loginPw.value.length == 0) {
			alert('비밀번호를 입력해주세요.');
			form.loginPw.focus();

			return;
		}

		<!-- 입력된 비밀번호(loginPw)와 확인(loginPwConfirm) 일치하는지 체크 )-->
		form.loginPwConfirm.value = form.loginPwConfirm.value.trim();
		if (form.loginPwConfirm.value.length == 0) {
			alert('비밀번호를 입력해주세요.');
			form.loginPw.focus();

			return;
		}
		
		if (form.loginPwConfirm.value != form.loginPw.value ) {
			alert('로그인 비밀번호 확인이 일치하지 않습니다.');
			form.loginPwConfirm.focus();

			return;
		}
		
		<!-- 패스워드 함호화 -->
		form.loginPwReal.value = sha256(form.loginPw.value);
		form.loginPw.value = '';
		form.loginPwConfirm.value = form.loginPw.value;

		form.submit();
		joinFormSubmitted = true;
	}
    
</script>

 

반응형
반응형

# 자바 이메일 보내기 구현(Gmail SMTP)

## gmail 설정하기

  • 다시 보안 탭에서 2단계 인증 설정 밑에있는 앱 비밀번호 진입
  • 앱 비밀번호를 생성할 앱 및 기기를 선택에서 앱 선택은 기타 선택 후 이름 입력하여 확인, 우측에 발급된 비밀번호 기억 ( 해당 비밀번호가 유출될 경우 구글 계정에 위험이 생길 수 있으니 유출되지 않도록 하기.. )

 

## Gmail SMTP 

  • 해당 파일을 WEB-INF 내 lib에 저장 후 Build Path 진행

mail-1.4.7.jar
0.50MB

  • Gmail SMTP 이용을 위해 인증용 파일, 사용할 파일 구성
  • 먼저 인증용 파일( 구글아이디, 발급받은 패스워드 입력 )
package com.sbs.java.blog.util;

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
 
public class MailAuth extends Authenticator{
    
    PasswordAuthentication pa;
    
    public MailAuth() {
        String mail_id = "구글 아이디"
        String mail_pw = "발급 받은 비밀번호";
        
        pa = new PasswordAuthentication(mail_id, mail_pw);
    }
    
    public PasswordAuthentication getPasswordAuthentication() {
        return pa;
    }
}
  • 메일 발송 내역 입력 등 진행할 파일
package com.sbs.java.blog.util;

import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class MailSend {

	public void welcomeMailSend() {

		Properties prop = System.getProperties();
		
        // 로그인시 TLS를 사용할 것인지 설정
		prop.put("mail.smtp.starttls.enable", "true");
        
		// 이메일 발송을 처리해줄 SMTP서버
		prop.put("mail.smtp.host", "smtp.gmail.com");
        
		// SMTP 서버의 인증을 사용한다는 의미
		prop.put("mail.smtp.auth", "true");
        
		// TLS의 포트번호는 587이며 SSL의 포트번호는 465이다.
		prop.put("mail.smtp.port", "587");

		Authenticator auth = new MailAuth();

		Session session = Session.getDefaultInstance(prop, auth);

		MimeMessage msg = new MimeMessage(session);

		try {
			// 보내는 날짜 지정
			msg.setSentDate(new Date());

			// 발송자를 지정한다. 발송자의 메일, 발송자명
			msg.setFrom(new InternetAddress("아이디@gmail.com", "표시될 이름"));
			
            // 수신자의 메일을 생성한다.
			InternetAddress to = new InternetAddress("아이디@gmail.com");
			
            // Message 클래스의 setRecipient() 메소드를 사용하여 수신자를 설정한다. setRecipient() 메소드로 수신자, 참조,
			// 숨은 참조 설정이 가능하다.
			// Message.RecipientType.TO : 받는 사람
			// Message.RecipientType.CC : 참조
			// Message.RecipientType.BCC : 숨은 참조
			msg.setRecipient(Message.RecipientType.TO, to);
			
            // 메일의 제목 지정
			msg.setSubject("환영합니다.", "UTF-8");
			
            // Transport는 메일을 최종적으로 보내는 클래스로 메일을 보내는 부분이다.
			msg.setText("가입을 축하드립니다.", "UTF-8");

			Transport.send(msg);

		} catch (AddressException ae) {
			System.out.println("AddressException : " + ae.getMessage());
		} catch (MessagingException me) {
			System.out.println("MessagingException : " + me.getMessage());
		} catch (UnsupportedEncodingException e) {
			System.out.println("UnsupportedEncodingException : " + e.getMessage());
		}
	}
}
반응형
반응형

# 자바 난수 발생(랜덤 숫자) 구현(비밀번호 등)

  • len을 통해 자릿수 설정, dupCd를 통해 중복 가능여부 설정
public static String numberGen() {
		
		Random rand = new Random();
        // 난수가 저장될 변수
        String numStr = ""; 
        // len : 난수 자릿수
        int len = 4;
        // dupCd : 난수의 중복 허용 여부 ( 1 허용 / 2 비 허용 )
        int dupCd = 1;
        
        for(int i = 0; i < len; i++) {
            
            //0~9 까지 난수 생성
            String ran = Integer.toString(rand.nextInt(10));
            
            if(dupCd==1) {
                //중복 허용시 numStr에 append
                numStr += ran;
            }else if(dupCd==2) {
                //중복을 허용하지 않을시 중복된 값이 있는지 검사한다
                if(!numStr.contains(ran)) {
                    //중복된 값이 없으면 numStr에 append
                    numStr += ran;
                }else {
                    //생성된 난수가 중복되면 루틴을 다시 실행한다
                    i-=1;
                }
            }
        }
        return numStr;	
	}

 

# 출처

https://6developer.com/4

반응형
반응형

# web.xml 파일 생성방법

  • 프로젝트 우클릭 후 JAVA EE Tools 클릭, Generate Deployment Descriptor Stub 클릭하여 생성한다.
  • 생성된 web.xml 파일은 WebContent > WEB-INF 에서 확인 가능하다.

반응형

+ Recent posts