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 받은 값을 이용하여 로그인 및 비밀번호 체크를 구현 해 보면 좋을 것 같습니다.