Back-End/Java

Java 단방향 암호화(SHA-256) 데이터 만들기(로그인, 비밀번호 설정, 웹 사이트 로그인, 웹 서비스 로그인, 암호화)

개발자 DalBy 2024. 5. 14. 13:45
반응형

Java 단방향 암호화(SHA-256) 데이터 만들기(로그인, 비밀번호 설정)

Java 단방향 암호화 SHA-256을 이용하여 암호화 데이터를 만드는 방법에 대해 포스팅 작성 해 보겠습니다. 먼저 간략하게 SHA-256이 어떤 것인지와 속성 관련으로 설명하면 다음과 같습니다.

 

SHA-256은 어떠한 것인가 ?

SHA-256(Secure Hash Algorithm 256비트)은 SHA-2(Secure Hash Algorithm 2) 암호화 해시 함수 중 하나입니다.

임의 크기의 입력 데이터에서 일반적으로 16진수 문자열로 표시되는 고정 크기 256비트(32바이트) 해시 값을 생성합니다.

SHA-256은 디지털 서명, 메시지 인증 코드(MAC), 비밀번호 해싱 등 다양한 암호화 애플리케이션에 널리 사용 됩니다.

 

 

SHA-256 암호화의 주요 속성 !

Deterministic: 동일한 입력 데이터가 주어지면 SHA-256은 항상 동일한 해시 값을 생성합니다.
Fixed Output Size: SHA-256의 출력 해시 값 길이는 항상 256비트(32바이트)입니다.
One-Way Function: 단방향 함수(복호화 불가능)
Collision Resistance: 동일한 해시 값을 생성하는 두 개의 서로 다른 입력 데이터를 찾는 것은 계산상 불가능합니다

 

간단 요약 설명:

단방향 암호화의 경우는 복호화가 불가능합니다. (양방향은 복호화 가능)

즉 따로 복호화가 필요없는 비밀번호와 같은 데이터는 단방향 암호화를 사용합니다.

 

SHA-256을 이용하여 해시 값을 만들어 사용합니다.

public static String sha256(String param) throws Exception {
    StringBuffer sb = new StringBuffer();
    MessageDigest md = MessageDigest.getInstance("SHA-256");
    md.update(param.getBytes());
    byte[] msg = md.digest();
    for(int i = 0; i < msg.length; i++){
        byte strByte = msg[i];
        String shaStr = Integer.toString((strByte & 0xff) + 0x100, 16).substring(1);
        sb.append(shaStr);
    }
    return sb.toString();
}

위 코드를 사용하면 SHA-256 해시값을 얻을 수 있습니다.

결과:

테스트 결과
테스트 결과

 

 

응용편으로 위 코드에서 return 받은 값을 이용하여 로그인 및 비밀번호 체크를 구현 해 보면 좋을 것 같습니다.

 

 



반응형