728x90
SHA-256 이란?
- SHA 알고리즘의 한 종류
- 256비트로 구성되며, 64자리 문자열을 반환함
- 블록체인에서 가장 많이 채택하여 사용하고 있음
- 2^256 가지의 경우의 수를 만들 수 있다
자바에서 SHA-256로 인코딩 된 문자열을 만드는 방법
- MessageDigest 인스턴스를 만든다(SHA-256으로)
- messageDigest를 바꾸고자하는 string의 바이트를 넣어 update한다
- byte값을 받아 hex값으로 바꾼다
- 출력
백준문제 10930: SHA-256
https://www.acmicpc.net/problem/10930
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
SHA-256이 아니라 SHA-224도 이와같은 방식으로 구하면 되겠다
참고자료
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[Java] 백준 문자열 브론즈 모음 (0) | 2023.07.16 |
---|---|
[Java] 백준 10935 BASE64 인코딩 디코딩 (0) | 2023.07.16 |
[Java] 백준 6118 숨바꼭질 - 실버2 (0) | 2023.07.16 |
[Java] 백준 14562 태권왕 - 실버2 (0) | 2023.07.15 |
[Java] 백준 14496 그대, 그머가 되어 - 실버2 (0) | 2023.07.15 |