본문 바로가기

STUDY/Java

Java | SHA-256

SHA

  • Secure Hash Algorithm
  • 가장 널리 사용되는 암호화 해시 함수 중 하나
  • 텍스트 혹은 데이터 파일에 대한 서명을 만드는 데 사용
  • Java에서 라이브러리 제공
  • SHA-256은 256bit(32bit)의 해시를 생성
  • 224, 256, 384, 512bit 의 해시를 생성할 수 있음
  • 단방향 함수로, 결과를 원래 값으로 해독할 수 없음

MessageDigest

Java에서 제공하는 SHA-256해시를 위한 내장 클래스
MessageDigest는 MD5, SHA-1, SHA-256의 해시 함수를 제공한다.

MessageDigest digest = MessageDigest.getInstance("SAH-256");

해시 얻기

public static String encrypt(String str) throws NoSuchAlgorithmException {
  MessageDigest digest = MessageDigest.getInstance("SHA-256");
  byte[] hash = digest.digest(str.getBytes(StandardCharsets.UTF_8));

  return bytesToHex(hash);
}

private static String bytesToHex(byte[] hash) {
  StringBuffer stringBuffer = new StringBuffer();
  for (int i = 0; i < hash.length; i++) {
    String hex = Integer.toHexString(0xff & hash[i]);
    if(hex.length() == 1) {
    	stringBuffer.append('0');
    }
    stringBuffer.append(hex);
  }
  return stringBuffer.toString();
}

 

 

 

SHA-256 Hashing in Java | Baeldung

A quick and practical guide to SHA-256 hashing in Java

www.baeldung.com