인생 디벨로퍼

SHA-256 해시 함수 코드 본문

JAVA Spring

SHA-256 해시 함수 코드

뫄뫙뫄 2023. 5. 12. 12:24
728x90
반응형
Secure Hash Algorithm 256

해시 함수의 하나.
임의의 데이터를 입력으로 받아 고정된 크기의 고유한 출력 값을 생성하는 알고리즘.
SHA-256은 256비트(32바이트) 크기의 해시 값을 생성하며, 보안 등급이 높아서 비밀번호 저장, 디지털 서명, 데이터 무결성 검증 등 다양한 보안 관련 작업에서 사용.

 

package shop.mtcoding.loginexample.util;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class PasswordHash {
    public static String getPasswordHash(String password) {
        // 패스워드 지정
        String plainText = "test1234"; // 평문
        String sha256 = "";

        try {
            /*
             * MessageDigest 클래스의 getInstance() 메소드의 매개변수에 "SHA-256" 알고리즘 이름을 지정함으로써
             * 해당 알고리즘에서 해시값을 계산하는 MessageDigest를 구할 수 있다
             */
            MessageDigest mdSHA256 = MessageDigest.getInstance("SHA-256");

            // 데이터(패스워드 평문)를 한다. 즉 '암호화'와 유사한 개념
            mdSHA256.update(plainText.getBytes("UTF-8"));

            // 바이트 배열로 해쉬를 반환한다.
            byte[] sha256Hash = mdSHA256.digest();

            // StringBuffer 객체는 계속해서 append를 해도 객체는 오직 하나만 생성된다. => 메모리 낭비 개선
            StringBuffer hexSHA256hash = new StringBuffer();

            // 256비트로 생성 => 32Byte => 1Byte(8bit) => 16진수 2자리로 변환 => 16진수 한 자리는 4bit
            for (byte b : sha256Hash) {
                String hexString = String.format("%02x", b);
                hexSHA256hash.append(hexString);
            }
            sha256 = hexSHA256hash.toString();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return sha256;
        // System.out.println(sha256);
        // 937e8d5fbb48bd4949536cd65b8d35c426b80d2f830c5c308e2cdec422ae2244
    }

}

728x90
반응형

'JAVA Spring' 카테고리의 다른 글

[Ajax] 좋아요 만들기!  (0) 2023.06.18
[Ajax] 썸네일 수정 contentType 설정  (0) 2023.06.17
spring 정리  (0) 2023.05.09
AOP 기본 연습 (1)  (0) 2023.03.14
JDBC를 이용한 자바 dbapp  (0) 2023.02.13