알고리즘/백준

[Java] 백준 10930 SHA-256

fladi 2023. 7. 16. 09:27
728x90

 

SHA-256 이란?

  • SHA 알고리즘의 한 종류
  • 256비트로 구성되며, 64자리 문자열을 반환함
  • 블록체인에서 가장 많이 채택하여 사용하고 있음
  • 2^256 가지의 경우의 수를 만들 수 있다

 

 

 

자바에서 SHA-256로 인코딩 된 문자열을 만드는 방법

  1. MessageDigest 인스턴스를 만든다(SHA-256으로)
  2. messageDigest를 바꾸고자하는 string의 바이트를 넣어 update한다
  3. byte값을 받아 hex값으로 바꾼다
  4. 출력

 

 

 

백준문제 10930: SHA-256

https://www.acmicpc.net/problem/10930

 

10930번: SHA-256

첫째 줄에 문자열 S가 주어진다. S는 알파벳 대문자와 소문자, 그리고 숫자로만 이루어져 있으며, 길이는 최대 50이다.

www.acmicpc.net

 

public class Main {
  public static void main(String[] args) throws IOException, NoSuchAlgorithmException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String plainText = br.readLine();

    //MessageDigest구하기
    MessageDigest mdSHA256 = MessageDigest.getInstance("SHA-256");

    //암호화
    mdSHA256.update(plainText.getBytes("UTF-8"));

    //바이트 배열로 받음
    byte[] sha256Hash = mdSHA256.digest();

    //바이트배열 -> 16진수로 변환
    StringBuffer hexSHA256Hash = new StringBuffer();
    for (byte b : sha256Hash) {
      String hexString = String.format("%02x", b);
      hexSHA256Hash.append(hexString);
    }

    System.out.println(hexSHA256Hash);
  }
}

 

 

 

 

응용 문제

https://www.acmicpc.net/problem/10929

 

10929번: SHA-224

첫째 줄에 문자열 S가 주어진다. S는 알파벳 대문자와 소문자, 그리고 숫자로만 이루어져 있으며, 길이는 최대 50이다.

www.acmicpc.net

 

SHA-256이 아니라 SHA-224도 이와같은 방식으로 구하면 되겠다

 

 

 

 

 

 

 

 

 

참고자료

https://qh5944.tistory.com/194

http://wiki.hash.kr/index.php/SHA256

728x90