반응형
[문제링크]
https://www.acmicpc.net/problem/10930
[문제]
문자열 S가 주어졌을 때, SHA-256 해시값을 구하는 프로그램을 작성하시오.
[입력]
첫째 줄에 문자열 S가 주어진다. S는 알파벳 대문자와 소문자, 그리고 숫자로만 이루어져 있으며, 길이는 최대 50이다.
[출력]
첫째 줄에 S의 SHA-256 해시값을 출력한다.
[예제 입력 1]
Baekjoon
[예제 출력 1]
9944e1862efbb2a4e2486392dc6701896416b251eccdecb8332deb7f4cf2a857
[설명]
이 문제는 SHA-256 문제이다.
MessageDigest를 사용하여 SHA-256 형식으로 암호화한다.
update 메소드를 사용하여 객체 내에 저장된 SHA-256 digest 값을 변경한다
digest 메소드를 호출하여 그 값을 가져온다.
%02x 형식(2자리 16진수 표시)을 사용하여 출력한다.
백준 알고리즘 10930번 JAVA풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class Main {
public static void main(String[] args) throws NoSuchAlgorithmException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
//SHA-256 형식으로 암호화
MessageDigest md = MessageDigest.getInstance("SHA-256");
//update() 메소드를 호풀할 때 마다 객체 내에 저장된 SHA-256 digest 값이 계속해서 갱신된다.
md.update(s.getBytes());
//digest()메소드를 호출하면 그 값을 가져올 수 있다.
for(byte b: md.digest()) {
System.out.printf("%02x", b); //%02x : 2자리 16진수 표시
}
}
}
궁금하신 부분이나 부족한 점은 댓글로 알려주시면 감사하겠습니다.
반응형
댓글