<TIL>/BaekJoon_문제풀이

[10930번]_SHA-256

<Kokheejin> 2021. 5. 4. 01:19

문제제목: SHA-256

문제난이도: 하

유형: 해시, 구현

적정풀이시간:  15분


문제

문자열 S가 주어졌을 때, SHA-256 해시값을 구하는 프로그램을 작성하시오.

입력

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

출력
첫째 줄에 S의 SHA-256 해시값을 출력한다.

 

입력1 출력1
Baekjoon 9944e1862efbb2a4e2486392dc6701896416b251eccdecb8332deb7f4cf2a857

 


풀이 아이디어

파이썬의 기본 라이브러리인 hashlib을 이용한다.

여기서, SHA256이란.

블록체인에서 가장 많이 채택하여 사중중인 것으로,

256비트로 구성되어 있으며, 64자리 문자열을 반환한다.

즉, 2의 256제곱(엄청 큰 수...)만큼의 경우의 수가 만들어질 수 있다.

경우의 수가 너무 많기 때문에 무차별적 대입에 있어 매우 안전하다고 볼 수 있다.

 

import hashlib을 통해 해당 라이브러리를 사용할 수 있다.

어떤 문자열을 SHA256으로 변환하려면,

hashlib.sha256(문자열.encode())를 통해 sha256화 한 뒤,(sha256해시객체가 생성됨)

이를 다시 .hexdigest()를 호출하여 변환한다.(digest는 요약을 의미한다.) (해시결과 문자열이 반환됨)

이를 통해 지금까지 공급된 데이터의 연결에 대한 요약을 요청하는 것이다.

 


나의 풀이

import hashlib

input_data = input()
encoded_data = input_data.encode()
result = hashlib.sha256(encoded_data)
print(result)
result_r = result.hexdigest()

print(result_r)

개선된 코드

from hashlib import *
print(sha256(input().encode()).hexdigest())