10930번: SHA-256백준/문제2024. 3. 7. 13:23
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/10930
언어 : Kotlin
문제 설명 :
문자열 S가 주어졌을 때, SHA-256 해시값을 구하는 프로그램을 작성하시오.
입력 :
첫째 줄에 문자열 S가 주어진다. S는 알파벳 대문자와 소문자, 그리고 숫자로만 이루어져 있으며, 길이는 최대 50이다.
출력 :
첫째 줄에 S의 SHA-256 해시값을 출력한다.
제한 사항 :
- 시간 제한 : 1초
- 메모리 제한 : 256MB
입출력 예 :
입력 | 출력 |
Baekjoon | 9944e1862efbb2a4e2486392dc6701896416b251eccdecb8332deb7f4cf2a857 |
풀이 :
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import java.security.DigestException
import java.security.MessageDigest
import java.util.*
private val digits = "0123456789ABCDEF"
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
bw.write(hashSHA256(readLine()).lowercase(Locale.getDefault()))
bw.flush()
bw.close()
}
fun hashSHA256(msg: String): String {
val hash: ByteArray
try {
val md = MessageDigest.getInstance("SHA-256")
md.update(msg.toByteArray())
hash = md.digest()
} catch (e: CloneNotSupportedException) {
throw DigestException("Couldn't make digset of partial content")
}
return bytesToHex(hash)
}
fun bytesToHex(byteArray: ByteArray): String {
val hexChars = CharArray(byteArray.size * 2)
for (i in byteArray.indices) {
val v = byteArray[i].toInt() and 0xff
hexChars[i * 2] = digits[v shr 4]
hexChars[i * 2 + 1] = digits[v and 0xf]
}
return String(hexChars)
}
'백준 > 문제' 카테고리의 다른 글
10173번: 니모를 찾아서 (0) | 2024.03.08 |
---|---|
16171번: 나는 친구가 적다 (Small) (0) | 2024.03.07 |
19583번: 싸이버개강총회 (0) | 2024.03.07 |
13417번: 카드 문자열 (1) | 2024.03.06 |
6550번: 부분 문자열 (1) | 2024.03.06 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!